2016-02-07 26 views
6

私は読み込み中のアニメーションを再生しようとしていますが、アンドロイドはgifをサポートしていないので、フレームに分割して再生したり、Movieクラスを使用することができます。Androidの致命的なシグナル11(SIGSEGV)、コード1、フォールトaddr 0x0 in tid 29092

相続人リーディング活性 -

相続人MYGIFView.class

package com.myapp.mehul.login; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Movie; 
import android.view.View; 

import java.io.InputStream; 

/** 
* Created by mehul on 2/7/16. 
*/ 
public class MYGIFView extends View{ 
    Movie movie,movie1; 

    InputStream is=null,is1=null; 

    long moviestart; 
    public MYGIFView(Context context) { 
     super(context); 

     is=context.getResources().openRawResource(+ R.drawable.loading); 

     movie=Movie.decodeStream(is); 

    } 
    @Override 
    protected void onDraw(Canvas canvas) { 

     canvas.drawColor(Color.WHITE); 
     super.onDraw(canvas); 
     long now=android.os.SystemClock.uptimeMillis(); 
     System.out.println("now="+now); 
     if (moviestart == 0) { // first time 
      moviestart = now; 

     } 
     System.out.println("\tmoviestart="+moviestart); 
     int relTime = (int)((now - moviestart) % movie.duration()) ; 
     System.out.println("time="+relTime+"\treltime="+movie.duration()); 
     movie.setTime(relTime); 
     movie.draw(canvas,this.getWidth()/2-20,this.getHeight()/2-40); 
     this.invalidate(); 
    } 
} 
を - 私はそれをMYGIFView.classのインスタンスを渡すことによって、コンテンツビューを設定して上記のコードで

package com.myapp.mehul.login.activity; 

import android.app.Activity; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AlertDialog; 
import android.util.Log; 

import com.myapp.mehul.login.MYGIFView; 
import com.myapp.mehul.login.MainActivity; 
import com.myapp.mehul.login.R; 
import com.myapp.mehul.login.app.Constants; 

import org.json.JSONException; 
import org.json.JSONObject; 

import java.net.URISyntaxException; 

import io.socket.client.IO; 
import io.socket.client.Socket; 
import io.socket.emitter.Emitter; 


/** 
* Created by mehul on 2/6/16. 
*/ 
public class LoadingScreen extends Activity { 

    /** Duration of wait **/ 
    private final int SPLASH_DISPLAY_LENGTH = 1000; 

    /** Called when the activity is first created. */ 
    private Socket mSocket; 
    String you; 
    String opponentId; 
    String username; 

    { 
     try { 
      mSocket = IO.socket(Constants.CHAT_SERVER_URL); 
     } catch (URISyntaxException e) { 

      throw new RuntimeException(e); 
     } 
    } 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(new MYGIFView(getApplicationContext())); 
     //initialise the socket 
     mSocket.connect(); 
     //call add user 
     mSocket.emit("add user"); 
     //start a listener for opponent 
     mSocket.on("opponent", onOpponent); 
     //initialise the username 
     username = getIntent().getExtras().getString("username"); 
    } 

    private Emitter.Listener onOpponent = new Emitter.Listener(){ 
     @Override 
     public void call(final Object... args){ 
      LoadingScreen.this.runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        JSONObject data = (JSONObject) args[0]; 

        try { 
         you = data.getString("you"); 
         opponentId = data.getString("opponent"); 
         Log.d("LoadingScreen", data.toString()); 


         //setResult(RESULT_OK, i); 


         finish(); 
        } catch (JSONException e) { 
         return; 
        } 
        Intent i = new Intent(LoadingScreen.this, MainActivity.class); 
        i.putExtra("opponentId", opponentId); 
        i.putExtra("you", you); 
        i.putExtra("username", username); 
        Log.d("goToChat", username); 
        startActivity(i); 
       } 
      }); 
     } 
    }; 

    @Override 
    public void onBackPressed(){ 

     AlertDialog.Builder builder = new AlertDialog.Builder(LoadingScreen.this); 
     builder.setMessage("I knew you didn't have BALLS.").setCancelable(
       false).setPositiveButton("I am a LOSER", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         //send the logout information to the server 
         JSONObject discon = new JSONObject(); 
         try { 
          discon.put("opponent", opponentId); 
          discon.put("you", you); 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         mSocket.emit("discon", discon); 
         mSocket.disconnect(); 

         //finish the current activity. 
         Intent intent = new Intent(LoadingScreen.this, MainMenu.class); 
         startActivity(intent); 
         LoadingScreen.this.finish(); 

        } 
       }).setNegativeButton("I'll fkin face it", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 

        } 
       }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

} 

読み込みアクティビティでMYGIFView.classのインスタンスが作成され、データが記録されますが、致命的なシグナル11が返されます。検索しようとしましたが、回答がありませんでした。

コンソールログ - あなたの活動のマニフェストのセットでは

02-07 12:22:30.321 29092-29092/? I/art: Late-enabling -Xcheck:jni 
02-07 12:22:30.341 29092-29102/? I/art: Debugger is no longer active 

02-07 12:22:30.422 29092-29092/? D/SQLiteHandler: Fetching user from Sqlite: {username=Harsh} 
02-07 12:22:30.422 29092-29092/? D/LoginActivity: already logged in 
02-07 12:22:30.425 29092-29092/? I/Timeline: Timeline: Activity_launch_request id:com.myapp.mehul.login time:71360781 
02-07 12:22:30.487 29092-29092/? D/MainMenu: painted again 
02-07 12:22:30.490 29092-29092/? D/SQLiteHandler: Fetching user from Sqlite: {username=Harsh} 
02-07 12:22:30.554 29092-29149/? D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 
02-07 12:22:30.559 29092-29092/? D/Atlas: Validating map... 
02-07 12:22:30.596 29092-29149/? I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.01.00.042.030_msm8974_LA.BF.1.1.1_RB1__release_AU() 
               OpenGL ES Shader Compiler Version: E031.25.03.06 
               Build Date: 04/15/15 Wed 
               Local Branch: mybranch9068252 
               Remote Branch: quic/LA.BF.1.1.1_rb1.19 
               Local Patches: NONE 
               Reconstruct Branch: AU_LINUX_ANDROID_LA.BF.1.1.1_RB1.05.01.00.042.030 + NOTHING 
02-07 12:22:30.597 29092-29149/? I/OpenGLRenderer: Initialized EGL, version 1.4 
02-07 12:22:30.611 29092-29149/? D/OpenGLRenderer: Enabling debug mode 0 
02-07 12:22:30.660 29092-29092/? I/Timeline: Timeline: Activity_idle id: [email protected] time:71361016 
02-07 12:22:31.898 29092-29092/com.myapp.mehul.login D/go to chat: was called 
02-07 12:22:31.899 29092-29092/com.myapp.mehul.login I/Timeline: Timeline: Activity_launch_request id:com.myapp.mehul.login time:71362255 
02-07 12:22:31.997 29092-29092/com.myapp.mehul.login I/System.out: now=71362353 
02-07 12:22:31.997 29092-29092/com.myapp.mehul.login I/System.out: moviestart=71362353 
02-07 12:22:31.997 29092-29092/com.myapp.mehul.login I/System.out: time=0 reltime=1850 
02-07 12:22:32.007 29092-29092/com.myapp.mehul.login A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 29092 (app.mehul.login) 
02-07 12:22:32.541 29092-29092/com.myapp.mehul.login W/app.mehul.login: type=1701 audit(0.0:302): auid=4294967295 uid=10250 gid=10250 ses=4294967295 subj=u:r:untrusted_app:s0 reason="memory violation" sig=11 
+0

これはメモリ関連のエラーです。デバイスにメモリリークやメモリ不足がある可能性があります。 –

+0

どうすれば修正できますか? – hashcode55

+0

この回答は役に立ちます。がんばろう! http://stackoverflow.com/questions/17840521/android-fatal-signal-11-sigsegv-at-0x636f7d89-code-1-how-can-it-be-tracked –

答えて

13

私は、その表示されている多くのことを意味し、この質問のためのバッチを受け取ったので、私はこれにお答えします質問 - 私は考え出した何

は、以下の行がエラーを投げていただった -

movie.draw(canvas,this.getWidth()/2-20,this.getHeight()/2-40); 

問題は、このエラーは具体的には多くの理由、具体的な理由が原因で発生する可能性があるということです。私のデバイスがハードウェアアクセラレーションでうまく動作しなかったためです。 ....

<android:hardwareAccelerated="false"> 

を今すぐその考えられる理由は同じではないかもしれないということが、コアの理由は、そのメモリ関連の同じであり、ほとんどのチャンス - ちょうどこのように、アプリケーションマニフェストでそれを無効にする必要がありましたあなたがテストしているデバイスやエミュレータのファームウェアにバグがあります。

+0

ハードウェアアクセラレーションを設定すると問題は解決しましたが、それはありませんでした私のアプリケーションには受け入れられません。そこで、特定のビューのハードウェアアクセラレーションのみを無効にしました。 textView.setLayerType(View.LAYER_TYPE_SOFTWARE、null); –

+0

あなたは私の人生を救ったが、シャドーをレンダリングするためにハードウェアアクセラレーションが本当に必要であり、回避策が見当たらない:-(しかし、一部のデバイスではh/wareアクセラレーションがうまく動作し、Samsungデバイスでアプリケーションをテストすると失敗する。 –

4

<activity 
     android:name="LoadingScreen" 
     android:hardwareAccelerated="false"> 
    </activity> 
関連する問題