今天遇到了这个问题,分享一下解决方式。

android没有main 函数,自然也就不存在main里面加入异常处理来实现全局异常捕获的方案。那android程序有全局异常补货的解决方式吗?

答案是有的:

那就是你得继承androidproject里面的application,如:

public class ReaderApplication extends Application implements Thread.UncaughtExceptionHandler{......}

并实现线程异常补货接口:Thread.UncaughtExceptionHandler

这样你的程序,仅仅要有没有处理的异常,都会在以下的uncaughtException函数中被捕获了。我的做法是重新启动应用程序。

@Overridepublic void uncaughtException(Thread thread, Throwable ex) {// TODO Auto-generated method stub//System.exit(0);Intent intent = getBaseContext().getPackageManager()              .getLaunchIntentForPackage(getBaseContext().getPackageName());                      PendingIntent restartIntent = PendingIntent.getActivity(                    getApplicationContext(), 0, intent,                    Intent.FLAG_ACTIVITY_NEW_TASK);                                                         //退出程序                                                  AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);            mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000,                    restartIntent); // 1秒钟后重新启动应用                   System.exit(0);        }


但不得不说的是,你得在application的oncreate函数中加上异常回调接口的注冊:

Thread.setDefaultUncaughtExceptionHandler(this);

最后是,你得在AndroidManifest.xml中,将这句话改动为自己的Application:

<application
android:name="com.founder.reader.ReaderApplication"

好了,有了上面的全局异常处理,也就不用所谓的main函数才干实现的了。同一时候,程序也不会再提示“xxx软件停止执行”了。

最后:程序重新启动得用系统时钟来重新启动,否则程序都退出了,谁来运行重新启动任务:

AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重新启动应用

最最后,不忘给自己的小站点打个广告:程序猿必备软件:www.uhdesk.com

更多相关文章

  1. C语言函数的递归(上)
  2. android 关机流程
  3. Android的Zipalign优化
  4. Android:Actionbar杂记
  5. 关于Android(安卓)Pie(Android(安卓)9.0),你想知道的都在这了
  6. Android应用程序组件Content Provider应用实例
  7. android 默认浏览器 无法下载,此手机不支持此内容(自定义文件or AP
  8. 分享七个非常有用的Android开发工具和工具包
  9. Android下Speex库除0错误(SIGFPE)排除

随机推荐

  1. Android:采用Google Suggest API 实现 Aut
  2. 2013.07.22(2)——— android 验证码与cook
  3. 在android中添加欢迎页
  4. Android的DialogFragment的基本使用方法
  5. android WindowManager 应用内部悬浮窗口
  6. Android 中的dm-verity原理分析
  7. AndroidStudio 设置signingConfigs让编译
  8. Android NDK开发之Hello world篇
  9. android反射调用
  10. SEAndroid简介