android 应用重启实现

来源:互联网 发布:阿里云测试培训 编辑:程序博客网 时间:2024/06/05 02:28


主要用到的类是: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());    }}


原创粉丝点击