Android使用UncaughtExceptionHandler捕获全局异常

android全局异常捕获器UncaughtExceptionHandler的基本使用 ——再过十天就可以去找工作了,最近为了简历好看点,复习下我的Cocos和QT啊.不知道以后用得到用不到啊,每个礼拜坚持写一篇吧,昨天晚上把淘宝物流信息的控件做出来了一半,实在没什么时间,下个礼拜看看能不能发. 阅读详情

Android系统的“程序异常退出”,给应用的用户体验造成不良影响。为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理。通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上即可。

1、异常处理类,代码如下:

public  class CrashHandler  implements UncaughtExceptionHandler  {
     public  static  final  String TAG  =  "CrashHandler" ;
     private  static CrashHandler INSTANCE  =  new CrashHandler ( ) ;
     private  Context mContext ;
     private  Thread. UncaughtExceptionHandler mDefaultHandler ;

     private CrashHandler ( )  {
     }

     public  static CrashHandler getInstance ( )  {
         return INSTANCE ;
     }

     public  void init ( Context ctx )  {
        mContext  = ctx ;
        mDefaultHandler  =  Thread. getDefaultUncaughtExceptionHandler ( ) ;
         Thread. setDefaultUncaughtExceptionHandler ( this ) ;
     }

    @Override
     public  void uncaughtException ( Thread thread,  Throwable ex )  {
         // if (!handleException(ex) && mDefaultHandler != null) {
         // mDefaultHandler.uncaughtException(thread, ex);
         // } else {
         // android.os.Process.killProcess(android.os.Process.myPid());
         // System.exit(10);
         // }
         System. out. println ( "uncaughtException" ) ;

         new  Thread ( )  {
            @Override
             public  void run ( )  {
                Looper. prepare ( ) ;
                 new AlertDialog. Builder (mContext ). setTitle ( "提示" ). setCancelable ( false )
                        . setMessage ( "程序崩溃了..." ). setNeutralButton ( "我知道了",  new OnClickListener ( )  {
                            @Override
                             public  void onClick (DialogInterface dialog,  int which )  {
                                 System. exit ( 0 ) ;
                             }
                         } )
                        . create ( ). show ( ) ;
                Looper. loop ( ) ;
             }
         }. start ( ) ;
     }

     /**
     * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成. 开发者可以根据自己的情况来自定义异常处理逻辑
     * 
     * @param ex
     * @return true:如果处理了该异常信息;否则返回false
     */

     private  boolean handleException ( Throwable ex )  {
         if  (ex  ==  null )  {
             return  true ;
         }
         // new Handler(Looper.getMainLooper()).post(new Runnable() {
         // @Override
         // public void run() {
         // new AlertDialog.Builder(mContext).setTitle("提示")
         // .setMessage("程序崩溃了...").setNeutralButton("我知道了", null)
         // .create().show();
         // }
         // });

         return  true ;
     }
}

2、线程绑定异常处理类

public  class CrashHandlerActivity  extends Activity  {
     /** Called when the activity is first created. */
    @Override
     public  void onCreate (Bundle savedInstanceState )  {
         super. onCreate (savedInstanceState ) ;
        setContentView (R. layout. main ) ;
        CrashHandler crashHandler  = CrashHandler. getInstance ( ) ;  
        crashHandler. init ( this ) ;   //传入参数必须为Activity,否则AlertDialog将不显示。
         // 创建错误
         throw  new  NullPointerException ( ) ;
     }
}

Android开发:UncaughtExceptionHandler捕获全局异常 # 前言 应用当前界面崩溃停留在上个页面,看不到崩溃日志? Android的logcat控制台,看不到应用崩溃的日志? 如何拦截到未捕获的异常,并打印出来,帮助我们快速定位到代码问题呢? 最近同事跟我反应说开发的应用run的时候发生了崩溃,但是在logcat中,只看到了应用重启的日志,类似下面这样的: # 寻找方案 那么怎样查看错误日志,快速定位问题的原因呢? 1,由于崩溃的概率... 阅读详情

相关推荐

学习笔记之Android利用UncaughtExceptionHandler捕获全局异常

一、概述 现如今,Android手机越发的普及,手机的品牌与型号五花八门、Android版本的不同,在开发过程中运行良好的app到了发布上线后安装到某款手机上说不定就出现异常崩溃的现象,开发者不可能在所有的设备逐个调试,所以在apk发布上线后,如果出现了崩溃现象,应及时捕获该设备导致崩溃的日志信息,这对于版本维护bug修复帮助极大,那么如何在app出现crash的情况下捕获设备的参数和较详细的异

星湖小筑的博客 1350

NDK 异常处理 学习

1.在C++ 层如果是自己写的代码 或者调用别人的方法,记得要 catch 异常,如果不try catch ,在java层是 try catch 不住的,肯定会挂掉          2.如果异常需要往外抛 给java 层 ,一定要按照java 层抛异常的方式        try{     }catch(const Exception& e){         env->Fin...

奋斗小威的专栏 1564

USB 3.0 高清音视频采集芯片——MS2130

MS2130 是一款 USB 3.0 高清视频和音频采集芯片,内部集成 USB3.0 Device 控制器、数据收发模块、音视频处理模块。

YOU_SeMi的博客 7858

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

一.什么是UncaughtExceptionHandler UncaughtExceptionHandler 是Java Thread类中定义的一个接口,用于处理未捕获的异常导致线程的终止。 当我们的App 停止运行的时候,就会走 UncaughtExceptionHandler的uncaughtException 方法,在该方法中可以获取到异常的信息。 所以,我们通过 setDefaultUncaughtExceptionHandler 该方法来设置线程的默认异常处理器,将异常信息保存到本地或者是上传到

xxdw1992的博客 2351

基于STM32的多路火灾报警系统设计

本文设计了一款基于STM32的多路火灾报警系统,利用多个传感器组合(如烟雾传感器、温度传感器等)进行数据采集与处理,精确判断火灾情况,并及时发出报警信号,保障生命与财产安全。本系统设计了一款基于STM32的多路火灾报警系统,通过结合烟雾传感器和温度传感器,提升了火灾检测的准确性和可靠性。未来,系统可以进一步集成更多传感器,如气体传感器、湿度传感器等,进一步提升火灾报警系统的智能化水平。本系统采用STM32F103单片机作为核心处理单元,结合烟雾传感器、温度传感器和报警模块,实现多通道火灾报警功能。

stm32d1219的博客 2029

kali攻防第2章 内网称霸之渗透安卓系统

Kali内网称霸之渗透安卓系统   准备工具   1、准备一部实体android手机 2、使用KALI系统     要用到强大的msf工具(metasplot)   流程步骤 1、启动msf命令是msfconsole 2、在安卓手机上安装一个自己生成的apk木马程序 3、利用msf工具来远程连接Android系统   1)启动msf(注意这里是链接msf就行了不需要进

安全参透之旅 1万+

Android之全局异常捕获UncaughtExceptionHandler

UncaughtExceptionHandler是Android中处理未捕获异常的基础API,用于崩溃兜底处理。当线程发生未被捕获的异常时,JVM会调用该处理器。用法是通过Thread.setDefaultUncaughtExceptionHandler设置自定义处理器来记录崩溃日志。但需注意:避免耗时操作、防止二次异常、兼容第三方工具;且无法处理ANR、OOM崩溃和原生层异常。该方法适合处理难以追踪的第三方库崩溃,提升用户体验。

LinkerHa的博客 257

【mip-NeRF】使用一组二维图像渲染3D场景视频(mip-NeRF论文复现)

本文对mip-NeRF模型的pytorch实现进行了复现

Ryan2k的博客 1842

【Android】使用UncaughtExceptionHandler捕获全局异常

简介当程序崩溃(Crash)的时候,默认是不对异常信息做处理的。如果想要把异常信息保存到本地文件中,或上传的服务器。那么就要借助UncaughtExceptionHandler这个类。使用方法一、实例化public class CrashLogCatch { public static final String THREAD_NAME_MAIN = "com.example.ABC";

Mlib 1348

把大表拆成更好用的“小仓库”:SAP HANA 表分区设计、分区裁剪与内存代价全解析

摘要:本文深入解析SAP HANA分区技术的核心价值与实现策略。作为内存数据库的"手术刀",分区通过将逻辑表横向切分为独立物理容器,显著提升并行计算能力与查询效率。重点探讨了三种分区类型(Range、Hash、Round-robin)的适用场景,以及分区裁剪的优化原理与前提条件。特别指出分区设计需要平衡查询模式与数据分布,并揭示了分区对内存占用的双向影响机制:既可能因字典复制增加消耗,也可能因数据纯度提升压缩率。通过电商订单表等实际案例,展示了合理分区如何将分钟级报表优化至秒级响应。文章

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1648

【麒麟桌面系统】企业微信提示当前副设备的企业微信版本较低

银河麒麟系统中登录企业微信时出现"副设备版本较低"的报错,可通过两种方案解决:1)更新最新版企业微信,需替换软件源并刷新软件商店安装8.0-50-4.1.26.6019kylin5版本;2)安装内测5.0版本企业微信,需下载deb包后使用sudo dpkg命令安装。文章还提供了常见问题解决表和长期维护建议,包括系统更新检查、软件源验证等维护项目及具体操作指南。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 2269

Android UncaughtExceptionHandler 捕获全局异常日志

1、实现UncaughtExceptionHandler接口 public class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler{ private static MyUncaughtExceptionHandler myUncaughtExceptionHandler = null; ...

anymyna的专栏 238

深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天

文章目录前期工作设置GPU导入数据标准化可视化构建CNN网络编译训练模型预测模型评估 前期工作 设置GPU 如果使用的是CPU可以忽略这步 import tensorflow as tf gpus = tf.config.list_physical_devices("GPU") if gpus: gpu0 = gpus[0] #如果有多个GPU,仅使用第0个GPU tf.config.experimental.set_memory_growth(gpu0, True) #设置GPU显存用量

“365天深度学习训练营”报名进行中~ 7854

android 全局 handler,Android使用UncaughtExceptionHandler捕获全局异常

转载地址:http://orgcent.com/android-uncaughtexceptionhandler-exception/ |萝卜白菜的博客Android系统的“程序异常退出”,给应用的用户体验造成不良影响。为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理。通过Thread.setDefaultUncaughtExceptionHa...

weixin_42541463的博客 238

选课系统进不去?我用 Python 做了个“捡漏挂机”脚本,全自动监控空余名额

频率控制:脚本请求频率不要太高(建议间隔 3-5 秒以上),否则可能被教务系统封 IP,甚至会被教务处请喝茶。仅供学习:本文旨在通过选课场景教学requests和网络抓包原理,请勿用于非法用途或破坏公平性。刷新页面 -> 等待加载 -> 用眼睛看人数 -> 没满?-> 点击选课 -> 确认这个流程最大的瓶颈在于**“等待加载”和“人的反应时间”**。网页加载需要渲染 HTML、CSS、图片,而 Python 脚本只需要请求一个微小的 JSON 数据接口,速度是浏览器的10 倍以上。fill:#333;

BUG猿的博客 292

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android UncaughtExceptionHandler捕获crash的全局异常

Android App在crash的时候可以做一些操作,比方说记录异常文件并上传到服务器,或者接入类似腾讯bugly的异常分析平台,一个简单的做法就是前者,实现的代码如下: package com.duoyin.stock.activity; import android.content.Context; import android.content.pm.PackageInfo; impor

Stay hungry,Stay foolish. 772

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: Android使用JNI实现Java与C之间传递数据
下一篇: Android WallpaperManager crops image
stonenotes123
博客等级 码龄15年 30粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值