2016-02-07 7 views
6

मैं अपने लोड हो रहा है स्क्रीन पर एक लोड हो रहा है एनीमेशन खेलने की कोशिश कर रहा हूँ, और मैंने कहीं पढ़ा है कि एंड्रॉयड gifs का समर्थन नहीं करता तो या तो आप के लिए है फ्रेम में तोड़ें और फिर इसे चलाएं या हम मूवी क्लास का उपयोग कर सकते हैं।एंड्रॉयड घातक संकेत 11 (SIGSEGV), कोड 1, टीआईडी ​​में गलती addr 0x0 29,092

यहाँ अग्रणी गतिविधि -

यहाँ 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(); 
    } 
} 
-

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 का एक उदाहरण पारित करके सामग्री दृश्य निर्धारित किया है

लोडिंग गतिविधि 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

स्थापना हार्डवेयर त्वरण समस्या का समाधान हो लेकिन यह wasn मेरे आवेदन के लिए स्वीकार्य नहीं है। तो मैंने केवल विशिष्ट दृश्य के लिए हार्डवेयर त्वरण को अक्षम कर दिया। textView.setLayerType (View.LAYER_TYPE_SOFTWARE, शून्य); –

+0

आपने मेरी जिंदगी को बचाया है, लेकिन मुझे वास्तव में छाया प्रस्तुत करने के लिए हार्डवेयर त्वरण की आवश्यकता है, और मुझे कोई कामकाज याद आ रहा है :-(लेकिन कुछ उपकरणों पर, एच/वेयर त्वरण अच्छी तरह से काम करता है और विफल रहता है जब मैं सैमसंग उपकरणों पर ऐप का परीक्षण करता हूं। –

4

अपनी गतिविधि में प्रकट सेट में:

<activity 
     android:name="LoadingScreen" 
     android:hardwareAccelerated="false"> 
    </activity> 
संबंधित मुद्दे