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. sql 跨服务器查询

    创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin ...

  2. day 36 网络编程终结内容

    今日概要: 1 gevent模块 协程:单线程下实现并发(并发指的是看起来同时运行,实现方式:切换+保存状态) 遇到IO切换到其他任务去执行,这种切换才能提高效率 gevent模块 1.切换+保存状态 ...

  3. 初识Linux系统

    1. pwd 显示现在所在位置 2. ls 显示目录下的文件 ls -a:显示隐藏文件(带 . 的就是隐藏文件): ls -a -l :每个文件夹的详细信息: ls > bbb (把查到的所有文 ...

  4. 修改tp5的默认配置文件的位置

    web |--application | |--admin | |--home | | |--controller | | |--model | | |--view | | |--extra 5.01 ...

  5. valueof toString

    valueof toString add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5) // 15 function add() { var ...

  6. 003.MMM双主-双从读写分离部署

    一 前期规划 1.1 主机规划 1.2 虚拟IP规划 1.3 用户列表 提示:以上角色需要在所有节点添加. 1.4 整体架构 1.4 hosts修改 1 [root@localhost ~]# vi ...

  7. spring注解工具类AnnotatedElementUtils和AnnotationUtils

    一.前言 spring为开发人员提供了两个搜索注解的工具类,分别是AnnotatedElementUtils和AnnotationUtils.在使用的时候,总是傻傻分不清,什么情况下使用哪一个.于是我 ...

  8. 自己总结的C#编码规范--6.格式篇

    格式 格式的统一使用可以使代码清晰.美观.方便阅读.为了不影响编码效率,在此只作如下规定: 长度 一个文件最好不要超过500行(除IDE自动生成的类). 一个文件必须只有一个命名空间,严禁将多个命名空 ...

  9. 按键排序JavaScript对象

    问题描述 我需要按键排序JavaScript对象. 因此如下: { 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' } 会成为: { 'a' : ' ...

  10. LanProxy 内网映射穿透

    前言:用过 ngrok 的人都知道,这是一个免费并且简便的内网映射工具,可是现在ngrok不知道弄啥?不能用了,那我们只能去找一些新的工具,下面是我跟我朋友一起弄的(主要是他教我(✪ω✪)),免费的, ...