2012-07-09 29 views
0

在我的Android應用程序中,我需要管理自定義Activity類中的所有未捕獲異常。現在我有一個問題,我無法從裏面啓動一個活動。即使活動未啓動,也沒有例外。如何從未捕獲的異常處理程序中啓動新的活動

public class MyActivity extends Activity { 
    Context context; 
    Throwable throwable; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     context=getApplicationContext(); 
     final AlertDialog.Builder builder= new AlertDialog.Builder(this); 

     Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { 

      @Override 
      public void uncaughtException(Thread thread, Throwable ex) { 
       throwable=ex; 
       new Thread(){ 
        @Override 
        public void run() { 
         Looper.prepare(); 

         builder.setTitle("Warning...!"); 
         builder.create(); 
         builder.setNegativeButton("Close", new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           finish(); 

          } 
         }); 
         builder.setPositiveButton("More Details", new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           Intent intent= new Intent(MyActivity.this,Report.class); 
           intent.putExtra("error", throwable); 
           startActivity(intent); 

          } 
         }); 
         builder.setMessage(throwable.getMessage()); 
         builder.show(); 
         Looper.loop(); 
        } 
       }.start(); 
      } 
     }); 
    } 
} 

回答

-1

此代碼適用於我。

注意:它將花費2 seconds加載新的活動後,我已經定義未捕獲的異常代碼。

只要把下面的代碼在你onCreate方法活動

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(){ 

     @Override 
     public void uncaughtException(Thread thread, Throwable ex) { 
     AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent); 
     System.exit(2); 
     startActivity(new Intent(CurrentActivity.this,TargetActivity.class)); 
    } 
    }); 

的讓我知道如果你對此有任何問題!

+1

mgr.set(AlarmManager.RTC,System.currentTimeMillis()+ 2000,intent);這裏有什麼意圖 – smkrn110 2015-10-30 15:11:05

+0

你能解釋一下這個例子多一點嗎? system.exit(2)下面的行如何被調用? – Harmen 2016-02-09 11:58:56

0

你需要

context.startActivity(intent); 
0

到chnage此行

startActivity(intent); 

從香港專業教育學院搜查什麼,好像你不能啓動從UncaughtExceptionHandlerActivity。您可以執行的最大操作是顯示Toast消息。

Toast.makeText(app, "Some message", Toast.LENGTH_SHORT).show(); 
相關問題