一般情况下我们想要捕获全局异常会调用Thread.setDefaultUncaughtExceptionHandler方法;这个方法虽然能捕获所有线程的异常,但如果是主线程发生未捕获异常,APP虽然不会崩溃,但是主线程的Looper会跳出循环,导致无法继续处理消息,无法与APP进行交互,处于一种假死状态;
想要主线程不崩溃,可以在自定义Application加上下面这段代码:

Handler(Looper.getMainLooper()).post() {while (true) {try {Looper.loop()} catch (e: Throwable) {Log.e("Crash【主线程】", e.message ?: "")}}
}

就是向主线程发送一个我们自定义的Message,这个Message里因为有while死循环,所以这个Message永远不会执行完,这就相当于把ActivityThread里调用的Looper.loop()方法阻塞死了,然后我们再调用Looper.loop()方法开启新的循环去不断处理主线程上的Message,并用try catch捕获到主线程异常;当主线程发生异常时,会执行下一次while循环再次调用Looper.loop()方法处理主线程消息,这样程序就不会因为主线程结束而导致APP崩溃

Android 捕获主线程异常崩溃相关推荐

  1. 【Android】为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler

    学而不思则罔,思而不学则殆 [Android]为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler 引言 官方解释 测试 测试uncaughtException的调用链 获 ...

  2. 主线程异常会导致 JVM 退出?

    大家好,我是坤哥 上周线程崩溃为什么不会导致 JVM 崩溃在其他平台发出后,有一位小伙伴留言说有个地方不严谨 他认为如果 JVM 中的主线程异常没有被捕获,JVM 还是会崩溃,那么这个说法是否正确呢, ...

  3. android子线程没有运行完,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...

    /* String ObjectResult="原先的结果"; //使用VOLLY框架(与问题无关) JsonObjectRequest jsonObjectRequest = n ...

  4. android广播怎样运行在子线程,android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢?...

    抛开你这段代码不看,单根据你的标题来回答: android假如主线程依赖子线程A的执行结果,如何让A执行完成,之后主线程再往下执行呢? 需要在子线程执行完成的地方,通过主线程的Handler发送一条消 ...

  5. Android的主线程与子线程

    在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...

  6. Android,UI主线程与子线程

    在一个Android 程序开始运行的时候,会单独启动一个Process.默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Co ...

  7. android判断主线程_惊天秘密!从Thread开始,揭露Android线程通讯的诡计和主线程的阴谋...

    背景介绍 我们在Android开发过程中,几乎都离不开线程.但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper.Ha ...

  8. Android 4主线程访问网络

    最近做一个Android项目,利用Jsoup读取和解析网页数据,同样的程序在Android2.3上运行完全正常,而跑到Android4上面,bug出现了... 看了一下异常:android.os.Ne ...

  9. Android 避免主线程执行网络请求之Activity/Fragment 结束后处理异步回调

    大家都知道Android涉及到与UI相关的操作只能在主线程执行 android4.0以后就禁止在主线程进行网络请求了,在主线程里面执行Http请求都会报NetworkOnMainThreadExcep ...

最新文章

  1. 清华开源 Jittor:首个国内高校自研深度学习框架,一键转换 PyTorch
  2. 苹果6屏幕多大_苹果12使用高通X55,10亿买下的英特尔基带何时能派上用场
  3. 超简单!基于Python搭建个人“云盘”
  4. 范式的数据库具体解释
  5. 同花顺崩了上热一!网友:早盘血亏,你还不让我跑 官方回应...
  6. sqlyog怎么查找表_VBA代码解决方案第58讲:在VBA中查找指定工作表的实用方法
  7. ADO.NET - Optimistic Pessimistic Concurrency
  8. LINUX 循环脚本
  9. 终端如何查看虚拟环境_Python版本管理工具和虚拟环境
  10. 实时操作系统分类、特点及实现原理
  11. 今日头条定位融资商业计划书
  12. linux基础学习思维导图及文档(17万字)
  13. Discuz模板安装步骤以及发生的问题
  14. 第一个Andriod应用
  15. 中国园区经济行业“十四五“规划与前景深度研究报告2021年版
  16. 高权重网站外链如何建设和打造?
  17. 经纬坐标(BLH)数据创建.kml文件小工具设计 Java版
  18. Redis实战:如何构建类微博的亿级社交平台
  19. [work] pytorch切片
  20. Bug管理的经验和实践

热门文章

  1. PostgreSQLl三种圆整函数对比
  2. npm i安装包依赖时 gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env
  3. PSD格式怎么转换成JPG?这几种方法轻易转换图片格式
  4. 解决AttributeError: ‘NoneType‘ object has no attribute ‘val‘ if left.val!=right.val:Line 17 问题
  5. OA行业解析:移动OA开启办公管理新模式
  6. ELK beat 配置说明
  7. 关闭hp服务器风扇检测能进系统吗,cpu风扇如何关闭检测
  8. 一个成熟的低代码平台能有多惊艳?
  9. 数据质量稽核工具-datacheck
  10. pink老师HTML详细笔记(b站视频)