Java代码
  1. 、收集所有 avtivity 用于彻底退出应用
  2. 、捕获崩溃异常,保存错误日志,并重启应用
  3. , intent,
  4. , restartIntent);
  5. // 关闭当前应用
  6. finishAllActivity();
  7. finishProgram();
  8. }
  9. };
  10. /**
  11. * 保存错误信息到文件中
  12. *
  13. * @return 返回文件名称
  14. */
  15. private String saveCatchInfo2File(Throwable ex) {
  16. Writer writer = new StringWriter();
  17. PrintWriter printWriter = new PrintWriter(writer);
  18. ex.printStackTrace(printWriter);
  19. Throwable cause = ex.getCause();
  20. while (cause != null) {
  21. cause.printStackTrace(printWriter);
  22. cause = cause.getCause();
  23. }
  24. printWriter.close();
  25. String sb = writer.toString();
  26. try {
  27. DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
  28. String time = formatter.format(new Date());
  29. String fileName = time + ".txt";
  30. System.out.println("fileName:" + fileName);
  31. if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
  32. String filePath = Environment.getExternalStorageDirectory() + "/HKDownload/" + packgeName
  33. + "/crash/";
  34. File dir = new File(filePath);
  35. if (!dir.exists()) {
  36. if (!dir.mkdirs()) {
  37. // 创建目录失败: 一般是因为SD卡被拔出了
  38. return "";
  39. }
  40. }
  41. System.out.println("filePath + fileName:" + filePath + fileName);
  42. FileOutputStream fos = new FileOutputStream(filePath + fileName);
  43. fos.write(sb.getBytes());
  44. fos.close();
  45. //文件保存完了之后,在应用下次启动的时候去检查错误日志,发现新的错误日志,就发送给开发者
  46. }
  47. return fileName;
  48. } catch (Exception e) {
  49. System.out.println("an error occured while writing file..." + e.getMessage());
  50. }
  51. return null;
  52. }
  53. // ------------------------------activity管理-----------------------//
  54. // activity管理:从列表中移除activity
  55. public void removeActivity(Activity activity) {
  56. activityList.remove(activity);
  57. }
  58. // activity管理:添加activity到列表
  59. public void addActivity(Activity activity) {
  60. activityList.add(activity);
  61. }
  62. // activity管理:结束所有activity
  63. public void finishAllActivity() {
  64. for (Activity activity : activityList) {
  65. if (null != activity) {
  66. activity.finish();
  67. }
  68. }
  69. }
  70. // 结束线程,一般与finishAllActivity()一起使用
  71. // 例如: finishAllActivity;finishProgram();
  72. public void finishProgram() {
  73. android.os.Process.killProcess(android.os.Process.myPid());
  74. }
  75. }

Android application捕获崩溃异常的更多相关文章

  1. 【转】Android 中处理崩溃异常并重启程序出现页面重叠的问题

    原文地址:http://blog.csdn.net/jiang547860818/article/details/53641113 android开发中经常会遇到程序异常,而已常常会遇到一出现异常AP ...

  2. Android中处理崩溃异常和记录日志(转)

    现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开 ...

  3. Android捕获崩溃异常

    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面.而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里.但平时使用的时候给你闹崩溃,那你就欲哭无泪了. ...

  4. Android中处理崩溃异常

    转自:http://my.eoe.cn/817027/archive/17997.html 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不 ...

  5. Android中处理崩溃异常和记录日志

    大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了 ...

  6. Android中处理崩溃异常CrashHandler

    来源:http://blog.csdn.net/liuhe688/article/details/6584143 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程 ...

  7. 【转】Android中处理崩溃异常

    大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了 ...

  8. Android中处理崩溃异常 (转)

    大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了 ...

  9. Android应用捕获全局异常自定义处理

    [2016-06-30]最新的全局异常处理DRCrashHandler已经集成在DR_support_lib库中 具体请看: https://coding.net/u/wrcold520/p/DR_s ...

随机推荐

  1. 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)

    注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...

  2. ConcurrentModificationException(并发修改异常)的解决

    [异常解释] ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常.[产生的原因] 迭代器是依赖于集合而存在的,在判断成功后,集合 ...

  3. day 49-css补充(终结)[浮动和定位]

    老师的笔记: 前情回顾: day49 混乱即阶梯. 1. 前情回顾 HTML HTTP和HTML 文档机构 <!Doctype html> HTML head <meta> & ...

  4. SEED-DVS6467_SDK的交叉编译环境搭建问题

    今天在ubuntu16.04上安装arm的交叉编译器arm_v5t_le-gcc,环境变量配置好以后,运行arm_v5t_le-gcc命令,总提示No such file or directory.然 ...

  5. python爬虫积累(一)--------selenium+python+PhantomJS的使用(转)

    阅读目录 一.Selenium介绍 二.爬虫为什么要用selenium? 三.PhantomJS介绍 四.PhantomJS安装 五.操作实战 六.在此推荐虫师博客的学习资料 selenium + p ...

  6. Person Re-ID行人重试别数据集

    1. 杜克大学数据(DukeMTMC-reID) DukeMTMC 数据集是一个大规模标记的多目标多摄像机行人跟踪数据集.它提供了一个由 8 个同步摄像机记录的新型大型高清视频数据集,具有 7,000 ...

  7. 简单封装kafka相关的api

    一.针对于kafka版本 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>ka ...

  8. Django项目中使用Redis

    Django项目中使用Redis DjangoRedis 1 redis Redis 是一个 key-value 存储系统,常用于缓存的存储.django-redis 基于 BSD 许可, 是一个使 ...

  9. js 解析json

    一 ,eval var dataObj=eval("("+data+")"); 1,这种形式将使得性能显著降低,因为它必须运行编译器 2,eval函数还减弱了你 ...

  10. 向量图兼容组件VectorCompat

    向量图兼容组件VectorCompat Android从5.0(API Level 21)开始,支持矢量图和动画矢量图.采用这两种图,可以避免传统图片因为缩放而产生失真.VectorCompat组件是 ...