当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

12.5 DrySister看妹子应用(第一版)——5.代码回顾,调整与日志类编写

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:28:22

ionHandler查询UncaughtExceptionHandler的线程,调用uncaughtException方法,将线程与异常作为参数传递。如果线程没有明确设置UncaughtExceptionHandler,则将其ThreadGroup作为其UncaughtExceptionHandler,然后丢给默认的未捕获异常处理程序处理。所以我们只需要实现UncaughtExceptionHandler接口,重写uncaughtException方法,来实现我们的自定义处理。我们先来捋一捋逻辑清单:1.建一个文件夹专门放日志文件:需要判断是存储卡是否可用,然后判断文件夹是否存在,不存在则新建文件夹;2.需要一个把字符串写入文件的方法3.崩溃日志的内容组成:当前的时间,应用版本,设备信息,奔溃日志4.获取系统默认的UncaughtException处理器,然后判断是否为null,不为空设置为自定义的UncaughtException,这里我们用单例5.最后是应用的重启,设置1s后重新启动应用;大概逻辑就是上面这些,我们一步步讲,首先是1,2步:接着是奔溃日志,由几部分组成:先是当前时间接着是应用版本以及设备信息,这里用一个HashMap来存:在接着是异常信息,这个就简单啦,直接传异常对象,调printStackTrace即可最后合到一起就是:写入文件的也解决了,然后是自定义UncaughtExceptionHandler单例以及默认UncaughtExceptionHandler处理器的获取,设置为自定义UncaughtExceptionHandler,还需重写UncaughtException方法接着我们把自己处理异常的一整套都写到一个方法里,当异常发生了,弹出一个Toast提示用户应用要重启,还有调用写入日志的方法:然后重写的UncaughtException方法做下判断,是否通过自定义处理了异常,以及默认的UncaughtExceptionHandler的是否为空,即:异常处理了没?没处理,丢给自定义的UncaughtExceptionHandler,如果处理了,重启应用。最后加上重启应用的相关代码,大功告成:到此我们的崩溃日志采集工具类就编写完毕了,要启用他的话需要在DrySisterApp.java中的onCreate()方法中加上:弄完想测试下是否生效的话很简单,手动引发崩溃就好了比如我在下一步的按钮里做除数为0的操作:应用运行后点击下一步,直接崩溃,打开内置存储根目录看下有没有Crash的文件夹,打开看到我们日志文件的话,说明成功:到此完成,把分支合并到develop上,然后推送到远程仓库上:git add .git commit -m "add LogUtils and CrashHandler"git checkout develop # 切换到develop分支git rebase bug_log_catch # 合并分支git push origin develop # 推送develop到远程分支git branch -d bug_log_catch # 删除合并后的本地分支5.小结本节先回顾了下之前写的代码,然后因为切换到AS 3.0上的原因小调整了一下代码,最后还编写了日志工具类以及崩溃日志采集工具类,麻雀虽小五脏俱全,尽管就是一个小小的图片显示程序,但是也算囊括了大部分的入门知识,下一节就是第一版的完结篇了,签名打包,混淆,以及发布到酷安市场了!敬请期待~代码下载:https://github.com/coder-pig/DrySister/tree/develop欢迎follow,star,觉得有什么想加进来的可以提下issues!

上一页  [1] [2] 


12.5 DrySister看妹子应用(第一版)——5.代码回顾,调整与日志类编写