2012-07-09 31 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(); 
相关问题