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

android 应用重启实现

2017-05-19 10:04 519 查看
主要用到的类是:Thread.UncaughtExceptionHandler 想了解更多可以百度下这个。。。

现在看主要实现代码吧:

注意:需要在每个启动的activity oncreate中调用

MyApplication.add 方法,然后在onDestroy函数中调用removeActivity方法。
备注: 这里用PendingIntent 定时重启应用要切记、


public class MyApplication extends android.app.Application {

private static ArrayList<Activity> list = new ArrayList<Activity>();

protected static MyApplication instance;
@Override
public void onCreate() {
super.onCreate();

instance = this;
Thread.setDefaultUncaughtExceptionHandler(restartHandler); // 程序崩溃时触发线程  以下用来捕获程序崩溃异常

}
// 创建服务用于捕获崩溃异常
private Thread.UncaughtExceptionHandler restartHandler = new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread thread, Throwable ex) {
restartApp();//发生崩溃异常时,重启应用
}
};
private void restartApp(){
try{
Thread.sleep(1500);
}catch (InterruptedException e){
Log.e(TAG, "error : ", e);
}
Intent intent = new Intent(instance.getApplicationContext(), ConsoleActivity.class);
PendingIntent restartIntent = PendingIntent.getActivity(instance.getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
//退出程序
AlarmManager mgr = (AlarmManager)instance.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重启应用
instance.finishActivity();
}

/**
* Activity关闭时,删除Activity列表中的Activity对象*/
public static void removeActivity(Activity a){
list.remove(a);
}

/**
* 向Activity列表中添加Activity对象*/
public static void addActivity(Activity a){
list.add(a);
}

/**
* 关闭Activity列表中的所有Activity*/
public static void finishActivity(){
for (Activity activity : list) {
if (null != activity) {
activity.finish();
}
}
//杀死该应用进程
android.os.Process.killProcess(android.os.Process.myPid());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息