App异常自动重启
来源:互联网 发布:excel对比2张表的数据 编辑:程序博客网 时间:2024/03/29 22:44
我们在进行开发的时候,经常会遇到异常报错的情景,然后我们的程序可能就弹出一个提示框,并且直接崩溃退出了。
而刚好前不久,我接到一个任务,要求实现当App异常的时候自动重启的一个功能,当时的想法是:“没有想法,囧~”,因为不想那么快就搜索找答案,于是问同学,同学直接说:“去搜一搜CustomActivityOnCrash”,好吧,最后还是要搜索,搜完之后发现,这并不是我想要的,异常之后它是弹出一个自定义的页面替换掉了系统弹出的提示框,而我的需求是直接重启,无需提示,但是还是可以学习一下。
1、application实现接口
public class App extends Application implements Thread.UncaughtExceptionHandler { private static Context mContext; @Override public void onCreate() { super.onCreate(); mContext = getApplicationContext(); Thread.setDefaultUncaughtExceptionHandler(this); } @Override public void uncaughtException(Thread thread, Throwable ex) { restart(); } private void restart() { Intent i = mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName()); PendingIntent pi = PendingIntent.getActivity(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT); AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, pi); android.os.Process.killProcess(android.os.Process.myPid()); } public static Context getContext(){ return mContext; }}2、在application里创建实例
public class App extends Application{ private static Context mContext; private Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { restart(); } }; @Override public void onCreate() { super.onCreate(); mContext = getApplicationContext(); Thread.setDefaultUncaughtExceptionHandler(handler); } private void restart() { Intent i = mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName()); PendingIntent pi = PendingIntent.getActivity(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT); AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, pi); android.os.Process.killProcess(android.os.Process.myPid()); } public static Context getContext(){ return mContext; }}其实关键就是UncaughtExceptionHandler,在实现的方法里面,其实我们还可以做一些其他工作,例如:记录异常日志。
好啦~废话不多说,就这样吧,希望对一些新人有帮助,大神勿喷,囧~
0 0
- App异常自动重启
- app崩溃后捕获异常或自动重启
- app崩溃后捕获异常或自动重启
- app崩溃后捕获异常或自动重启
- Android开发之app崩溃后捕获异常或自动重启
- Android 全局异常捕获 重启app
- APP崩溃后自动重启
- Android 开机自动重启App代码
- android app崩溃后自动重启
- android遇到异常自动重启代码
- 兔子--关不掉的App,或者是自动重启
- 如何让 App 在崩溃后自动重启
- 让程序异常退出后自动重启
- 让程序异常退出后自动重启
- linux下实现进程异常退出后自动重启
- 利用SetUnhandledExceptionFilter机制实现程序异常后自动重启
- BaseActivity+Application的使用,捕捉异常自动重启应用
- Android APP进程保护,在APP进程异常崩溃后能够重启
- visual stdio 插件,快速插入预设代码
- 牛客网刷题--剑指offer(重建二叉树)
- Android跨进程通信之ContentProvider
- Nginx安装及其配置
- 从一行JPA代码说起
- App异常自动重启
- java.lang.numberformatexception
- 每天一个linux命令(38):iostat命令
- APP集成Apple Pay指南
- 按行/列分割文件
- Android取消EditText自动默认获取焦点行为
- Android软键盘弹出,返回键Activity不结束
- C语言__attribute__
- 两种常见电商sku的设计