热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安卓捕获系统崩溃UncaughtExceptionHandler异常捕获

一.什么是UncaughtExceptionHandlerUncaughtExceptionHandler是JavaThread类中定义的一个接口,用于处理未捕获的异常导致线程的终

一.什么是UncaughtExceptionHandler

UncaughtExceptionHandler 是Java Thread类中定义的一个接口,用于处理未捕获的异常导致线程的终止。

当我们的App 停止运行的时候,就会走 UncaughtExceptionHandler的uncaughtException 方法,在该方法中可以获取到异常的信息。

所以,我们通过 setDefaultUncaughtExceptionHandler 该方法来设置线程的默认异常处理器,将异常信息保存到本地或者是上传到服务器,方便我们快速的定位问题。

二.捕获全局异常的工具类


public class NeverCrash {private CrashHandler mCrashHandler;private static NeverCrash mInstance;private NeverCrash() {}private static NeverCrash getInstance() {if (mInstance == null) {synchronized (NeverCrash.class) {if (mInstance == null) {mInstance = new NeverCrash();}}}return mInstance;}public static void init(CrashHandler crashHandler) {getInstance().setCrashHandler(crashHandler);}/*** @author Longchengbin* @description 捕获异常的回调操作* @since 2020-8-3 08:54**/private void setCrashHandler(CrashHandler crashHandler) {mCrashHandler = crashHandler;new Handler(Looper.getMainLooper()).post(new Runnable() {@Overridepublic void run() {for (; ; ) {try {Looper.loop();} catch (Throwable e) {LogUtils.e(TimeUtils.getTimeNow() + "程序崩溃原因:" + e.getMessage());LogUtils.file(TimeUtils.getTimeNow() + "程序崩溃原因:" + e.getMessage());if (mCrashHandler != null) {//捕获异常处理mCrashHandler.uncaughtException(Looper.getMainLooper().getThread(), e);}}}}});/*** @author Longchengbin* @description 设置系统全局异常* @since 2020-8-3 08:55**/Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {@Overridepublic void uncaughtException(Thread t, Throwable e) {if (mCrashHandler != null) {//捕获异常处理mCrashHandler.uncaughtException(t, e);}}});}/*** @author Longchengbin* @description 异常回调接口* @since 2020-8-3 08:53**/public interface CrashHandler {void uncaughtException(Thread t, Throwable e);}
}

三.在application中设置初始化工具

 

 


推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
author-avatar
川人是天下的盐恋歌_334
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有