今天对项目做了程序全局异常处理,当程序抛出异常的时候会在Application进行处理,提高用户体验。
public class VideoApplication extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); Cockroach.install(new Cockroach.ExceptionHandler() { @Override public void handlerException(final Thread thread, final Throwable throwable) { new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { try { Log.d("Cockroach", thread + "\n" + throwable.toString()); throwable.printStackTrace(); Intent intent = new Intent(); intent.setClass(getApplicationContext(), MainActivity.class); // intent.setAction("android.intent.action.MAIN1"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } catch (Throwable e) { } } }); } }); } }
但是 在Application当中无法启动Activity 原因是原有的任务栈已经销毁,因此要判断启动的activity是不是被销毁,如有,则新建一个只要添加一个标志就行代码如下
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Intent.FLAG_ACTIVITY_NEW_TASK 设置状态,首先查找是否存在和被启动的Activity具有相同的任务栈,如果有则直接把这个栈整体移到前台,并保持栈中的状态不变,既栈中的activity顺序不变,如果没有,则新建一个栈来存放被启动的Activity
大家加油!!!