2013-10-25 12 views
6

Tôi đang gặp sự cố khi cố bắt đầu ý định khi một số AsyncTask được hoàn tất theo phương thức onPostExecute. Lần đầu tiên tôi gọi số AsyncTask là trong hoạt động màn hình giật gân.Bắt đầu một Hoạt động trong onPostExecute

public class SplashScreen extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash); 

     startJsonGet(); 
    } 

    public void startJsonGet() { 
     JsonGet getData = new JsonGet(mBuildings, SplashScreen.this); 
     getData.execute(); 

    } 
} 

này gọi JsonGet lớp

public class JsonGet extends AsyncTask<Void, Void, Void> { 

    Context context; 

    JsonGet(ArrayList<Building> mBuildings, Context context){ 
     super(); 
     this.mBuildings = mBuildings; 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // before making http calls 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     JsonParser jsonParser = new JsonParser(); 
     String json = jsonParser 
       .getJSONFromUrl(""); 

     Log.e("Response: ", "> " + json); 


     if (json != null) { 
      try { 

       //Does stuff 
       } 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     Intent i=new Intent(context, MainActivity.class); 
     context.startActivity(i); 

    } 

} 

Các JSON được phân tích một cách chính xác, và nhật ký cho thấy điều này. Nhưng khi tôi cố gắng gọi một ý định trong bài thực thi nó bị treo. Tôi cần gọi hàm này là JsonGet từ một lớp khác. (Ví dụ: Cập nhật dữ liệu Json khi người dùng nhấp vào nút làm mới.) Vì vậy, việc gọi ý định từ lớp màn hình giật gân sẽ không hoạt động.

Đây là nhật ký mà tôi nhận được

10-25 16:03:12.156 8481-8481/com.andrewcode.broncomaps E/eglCodecCommon﹕ writeFully: failed: Broken pipe 
10-25 16:03:12.156 8481-8481/com.andrewcode.broncomaps E/EGL_emulation﹕ tid 8481: eglChooseConfig(576): error 0x3001 (EGL_NOT_INITIALIZED) 
10-25 16:03:12.164 8481-8481/com.andrewcode.broncomaps E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.IllegalArgumentException: eglChooseConfig failed EGL_NOT_INITIALIZED 
      at android.view.HardwareRenderer$GlRenderer.chooseEglConfig(HardwareRenderer.java:893) 
      at android.view.HardwareRenderer$GlRenderer.initializeEgl(HardwareRenderer.java:845) 
      at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:786) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1502) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
      at android.view.Choreographer.doFrame(Choreographer.java:532) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
      at android.os.Handler.handleCallback(Handler.java:725) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5041) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

bạn có đóng trình đọc/ghi chú không? –

+0

Bạn chắc chắn sẽ cần phải đọc mã nguồn của lớp HardwareRenderer và tìm ra lý do tại sao ngoại lệ đó được ném ra. Đây là một liên kết: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/view/HardwareRenderer.java#HardwareRenderer.GlRenderer.chooseEglConfig % 28% 29 –

Trả lời

21

Tôi không thấy bất kỳ vấn đề với AsyncTask. Vấn đề có vẻ là với giả lập của bạn. Hãy thử khởi động lại nó. Có thể liên kết này giúp bạn: EGL_emulation failed to establish connection to host - android

+0

Hoạt động tốt trên phần cứng của tôi. Cảm ơn đã giúp đỡ! – AndyGable

+0

Cảm ơn mẹo. Tôi đã có lỗi tương tự, và khởi động lại trình giả lập đã sửa nó. – Hong

+0

Wow ... 4 giờ cho điều này ... Cảm ơn! +1 –

Các vấn đề liên quan