您的位置:首页 > 移动开发 > Android开发

Android初学------程序发生异常重启demo

2015-06-23 15:56 381 查看
<pre name="code" class="java">public class CrashHandler  implements UncaughtExceptionHandler  {

private  static CrashHandler mCrashHandler =new CrashHandler();

private Thread.UncaughtExceptionHandler mDefaultHandler;

private Context mContext;

private PendingIntent intent;

@Override
public void uncaughtException(Thread thread, Throwable ex) {
// TODO Auto-generated method stub
Log.i("TTT","发生异常了呢。。。。。。。。。。。。。。。。。。");
sendHandler();
}

private void sendHandler() {
// TODO Auto-generated method stub
intent = PendingIntent.getActivity(mContext, 0,  new Intent(mContext, MainActivity.class),Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
System.exit(2);
}

private CrashHandler() {
// TODO Auto-generated constructor stub
}

public static CrashHandler getInstance(){
return  mCrashHandler;
}

public void init(Context context){
mContext=context;
mDefaultHandler=Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
}

}



异常处理类 -------------------------- ↑

注册异常处理类 ↓

public class MyApplication extends Application {

@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
CrashHandler crashHandler=CrashHandler.getInstance();
crashHandler.init(getApplicationContext());
}

}


人为制造异常

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("TTT","onCreatele了呢。。。。。。。。。。。。。。。。。。");
findViewById(R.id.btn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println(a.equals("123"));
}
});
}


log输出

01-02 02:11:55.980: I/TTT(16359): 发生异常了呢。。。。。。。。。。。。。。。。。。
01-02 02:11:58.200: I/TTT(16682): onCreatele了呢。。。。。。。。。。。。。。。。。。
01-02 02:12:44.110: I/TTT(16682): 发生异常了呢。。。。。。。。。。。。。。。。。。
01-02 02:12:46.280: I/TTT(17586): onCreatele了呢。。。。。。。。。。。。。。。。。。


此demo为简易版,需要实现自身逻辑在uncaughtException方法中处理。。。。。比如保存错误日志之类的,,,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: