在开发过程中,很多时候需要我们自己捕获异常,有的需要上传服务器,有的需要保存在本地,有的只需要在程序出现异常时进行调试,查找bug地方。在android中,使用UncaughtExceptionHandler来捕获异常。

UncaughtExceptionHandler是一个接口,需要我们来实现。代码如下

/**
 * Created by ycl on 2016/11/15.
 */

public class CrashHandler implements Thread.UncaughtExceptionHandler {private static Object lock = new Object();

    private CrashHandler() {// Empty Constractor
    }private static CrashHandler mCrashHandler;
    private Context mContext;

    public static CrashHandler getInstance() {synchronized (lock) {if (mCrashHandler == null) {synchronized (lock) {if (mCrashHandler == null) {mCrashHandler = new CrashHandler();
                    }}}return mCrashHandler;
        }}/* 初始化 */
    public void init(Context context) {this.mContext = context;
        Thread.setDefaultUncaughtExceptionHandler(this);
    }@Override
    public void uncaughtException(Thread thread, final Throwable ex) {System.out.println("uncaughtException:"+ex.getMessage());
        Intent intent = new Intent(mContext, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(0);
    }}

在uncaughtException,就是捕获到的异常信息,在这里我们可以保存异常信息到本地文件,也可以上传到服务器,重启当然也在这里,代码如上图所示,

在使用的时候,刚开始启动应用失败,后面才发现,启动的这个activity必须是启动界面activiy,也就是xml中设为启动界面的activity,而且launchermodel必须是默认的,不能是singleTop,singleTask,singleInstance,否则无法启动

实现UncaughtExceptionHandler之后,只需要在自定义application中初始化即可,

CrashHandler.getInstance().init(this);  

android自定义异常,并重启应用相关推荐

  1. Android系统移植与调试之-------如何修改Android设备添加重启、飞行模式、静音模式等功能(一)...

    1.首先先来看一下修改前后的效果对比图 修改之后的图片 确认重启界面 具体的修改内容在下一篇中具体介绍. Android系统移植与调试之------->如何修改Android设备添加重启.飞行模 ...

  2. 为Android系统定制重启功能

    按计划每周更新一篇技术博文,第二篇:<为Android系统定制重启功能> 一.Android系统重启的实现方式 1.广播方式 之前的博文介绍过这种方式<使用广播实现的Android关 ...

  3. android堆栈信息,android死锁致重启问题分析

    摘自:http://www.2cto.com/kf/201207/142853.html 使用过Android的同学,尤其是用过山寨pad,应该对Android的重启问题印象深刻吧.Android由于 ...

  4. Android 系统自动重启Bug(高通平台)

    点击打开链接 最近客户反馈了一个Bug,我们的系统用着用着会自动重启,尤其是在拨号的时候极容易死机或者进入下载模式.根据老大和高通的支持得到了一个解决方案. 在Android系统中,有这么一个文件夹: ...

  5. android 手机wifi重启,android – 如何通过重启来记住wifi配置和连接网络

    我正在使用以下代码创建新的WiFi接入点并连接到它. 这段代码工作正常,我能够连接到wifi接入点,但我面临的问题是我正在创建的wifi连接没有记住通过设备的重新启动. WifiManager wif ...

  6. android 发送重启广播,Android实现关机重启的方法分享

    实现系统重启的APK需要system的权限,在AndroidManifest.xml中增加android:sharedUserId="android.uid.system",再修改 ...

  7. android打开网址重启后也是这个网站,千万不要乱试!iPhone只要打开这个「网址」立即崩溃重启!...

    Safari 是苹果产品指定使用的浏览器,提供快速的网页浏览服务,但是最强的浏览器始终也有弱点最近流传一个网站,只需要登入,就足以令Safari 彻底崩溃-- 这个名为crashsafari.com ...

  8. android服务自动重启,安卓service关闭后怎么自动重启

    满意答案 首先申明service关闭有两种情况: 1.程序进入后台,系统可能会销毁应用,可以理解为android端监听推送消息的服务在启动后是一直在后台运行的,但是当内存不足时,或者第三方应用清理内存 ...

  9. android 应用自动重启,Android 应用崩溃后自动重启的方法

    public class HKApplication extends Application { private List activityList = new ArrayList(); @Overr ...

最新文章

  1. PHP 使用 OSS上传文件
  2. 数组遍历VS对象遍历
  3. FastDFS部署及测试
  4. 《HTML5开发手册》——1.5 初学者“菜谱”:使用nav元素创建导航
  5. 使用Docker安装的Tuleap-aio.查看admin默认密码
  6. python定义变量字符串_Python学习笔记二(变量和字符串)
  7. python3环境变量和pip_Tool_linux环境安装python3和pip
  8. href 和 src 区别
  9. python自动化中使用unittestreport输出测试报告
  10. 人工智能的数学基础------- 矩阵迹与相似矩阵的本质
  11. More Grounded Image Captioning by Distilling Image-Text Matching Model
  12. clear linux
  13. WCF---关于无法使用以下搜索标准找到 X.509 证书的问题
  14. WPS在中文状态下输入的标点符号为英文的问题
  15. 吐血推荐珍藏的Visual Studio Code插件
  16. LLaMA模型系统解读
  17. secureCRT连接阿里云服务器
  18. 一些检索英文文献的网址(收藏)
  19. 怎样将语音转化为文字
  20. HEVC中一些英语简写

热门文章

  1. python数据结构之搜索
  2. Git 代码的审阅与提交
  3. import open3d:GLIBC_2.18 not found
  4. 伪原创视频改多少比例 短视频去水印小工具bet
  5. TL-WN725N V3无线网卡驱动移植与wireless工具wpa_supplicant-2.6
  6. 大数据技术之phoenix
  7. Amesim车辆仿真--开篇
  8. vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题)
  9. usb2.0移动硬盘数据传输速度因素
  10. tensorflow报错:AttributeError: 'module' object has no attribute 'get_or_create_global_step'