android 中处理崩溃异常并重启程序

android——异常捕获崩溃后重新启动App 重启app这是一种解决方式,还有另外一种方式可以集成三方平台用于捕获异常,例如:Bugly。最后,异常每个人都会遇到,希望这篇文章能帮助到大家。 阅读详情

android 中处理崩溃异常并重启程序

有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在android中怎样捕获程序的异常崩溃,然后进行一些必要的处理或重新启动
应用这个问题困恼了我很久,今天终于解决了该问题,写篇文章记录一下。
首先捕获程序崩溃的异常就必须了解一下java中UncaughtExceptionHandler这个接口,android沿用了此接口,在android API中:

通过实现此接口,能够处理线程被一个无法捕捉的异常所终止的情况。如上所述的情况,handler将会报告线程终止和不明原因异常这个情况,如果没有自定义handler,
线程管理组就被默认为报告异常的handler。
ThreadGroup 这个类就是实现了UncaughtExceptionHandler这个接口,如果想捕获异常我们可以实现这个接口或者继承ThreadGroup,并重载uncaughtException方法。
在java API中对该接口描述的更详细:

注意:

在应用异常时,系统会进入

public void uncaughtException(Thread thread, Throwable ex) {

执行相应的错误处理逻辑。我们在这里将错误捕获写入文件、上传服务器等,然后通过启动入口Activity的方法重新开启一个界面,并且杀掉当前崩溃的程序的进程

在启动Activity的时候,使用新的栈容器方式去启动 FLAG_ACTIVITY_NEW_TASK

android.os.Process.killProcess(android.os.Process.myPid());杀掉进程以后会重启   

这时候要注意,如果在新启动的Activity中点back键的话,系统会一直调用finish()方法。调用finish()方法最后会杀死进程,如果这个时候有异常产生或者结束进程后会出现频繁的启动Activity。这时候就会无法退出程序。我们需要处理的策略是
管理Activity并且在出现异常的时候关闭所有的Activity,然后再重启一个入口的Activity,同时,对Activity的返回键处理 代码如下:

返回键处理

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
        if((System.currentTimeMillis()-exitTime) > 2000){
            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
           finish();
        }
    }
        return true;
}

onCreate中将已经打开的Activity管理

    app = ((MobileGuardApplication) getApplicationContext());
    app.activities.add(this);

在崩溃后关闭所有Activity,并重新打开入口,杀掉线程

if (activities.size() != 0) {
        for (Activity activity :
                activities) {
            activity.finish();
        }
    }
    Intent intent = new Intent(this, CaptureActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    android.os.Process.killProcess(android.os.Process.myPid()); 

这样我们就实现了崩溃后重启,并且返回键退出的业务需求

水平有限,欢迎指正!

android 中处理崩溃异常并重启程序出现页面重叠的问题 android开发中经常会遇到程序异常,而已常常会遇到一出现异常APP就自动重启了,而已如果你的项目中应用到Fragment的切换的话,会出行页面重叠的现象。今天为了解决这个问题看了不少大牛的博客。最后终于把问题解决了,下面就把解决的方法做一个介绍。 总的问题解决定向是处理崩溃异常的方法。先说说我前面尝试的不成功的方法。 一、写一个类实现UncaughtExceptionHandler 接口pu 阅读详情

相关推荐

Android 应用崩溃后捕获异常并实现应用重启

在这里,我们可以执行自定义的操作。通过实现自定义的 UncaughtExceptionHandler,我们可以在应用崩溃时执行自定义的操作,比如重启应用。总结一下,在 Android 应用中捕获异常并在应用崩溃后重启应用,我们需要实现一个自定义的 UncaughtExceptionHandler,并在应用的入口点设置它。通过这样的设置,当应用发生崩溃时,CustomUncaughtExceptionHandler 类的 uncaughtException 方法将被调用,从而触发应用的重启操作。

DevSavantX的博客 939

Android UncaughtExceptionHandler 记录异常并重启程序

异常捕获主要是在全局的Application中来处理的,Android提供了一个CrashHandler用来进行错误处理。 intent添加 “Intent.FLAG_ACTIVITY_NEW_TASK” 标记的原因是——Content的startActivity方法,需要开启一个新的task。如果使用 Activity的startActivity方法,不会有任何限制,因为Activity继承自

司马懿的西山居 4481

android 处理崩溃异常并重启程序

android 处理崩溃异常并重启程序

安卓崩溃异常处理及App重启

内容:优雅地处理崩溃问题,崩溃时给予用户提醒,然后重新启动app,增强用户体验感(当然,不崩溃才是最好的体验,汗)。 未处理崩溃时的效果图: 处理后崩溃时的效果图: 就不写步骤了,直接说下逻辑思想。其实就是拦截系统的崩溃处理,自己进行处理。重点在实现UncaughtExceptionHandler和在其uncaughtException(Thread thread, Throwabl...

Mr_Leixiansheng的博客 1911

魔兽世界怀旧服宏命令全解析:从自动换装到智能判定,老玩家才知道的黑科技

本文全面解析魔兽世界怀旧服宏命令的高级应用,从自动换装到智能判定,揭秘老玩家专属的黑科技技巧。深入探讨怀旧服特有的宏命令机制,包括施法队列、装备切换系统和职业专属技巧,帮助玩家在经典旧世版本中提升战斗效率。

weixin_29230865的博客 726

PCIe ATS介绍

主机侧使用IOMMU完成设备地址到物理memory地址的转换,以及设备访问权限的检查。但如果所有PCIe设备都在进行DMA操作,则TA(Translation Agent)和ATPT(Address Translation and Protection Table)则会成为瓶颈,从而影响系统的latency。

maxwell2ic的博客 6021

Android 捕获异常并在应用崩溃后重启应用

问题概述: 在Android应用开发中,偶尔会因为测试的不充分导致一些异常没有被捕获,这时应用会出现异常并强制关闭,这样会导致很不好的用户体验,为了解决这个问题,我们需要捕获相关的异常并做处理。 首先捕获程序崩溃的异常就必须了解一下Java中UncaughtExceptionHandler这个接口,这个接口在Android开发上面也是可以使用的,在API文档中,我们可以了解到:通过实现此接口,能够...

weixin_34151004的博客 205

多模态特征融合方法总结

由于本人的研究是文本、语音和图像三者模态数据的融合,所以针对的是这三种模态的特征融合方法进行总结。 首先,多模态特征融合的方法大体分为三种

华辰烟雨的博客 9万+

【转】Android 中处理崩溃异常并重启程序出现页面重叠的问题

原文地址:http://blog.youkuaiyun.com/jiang547860818/article/details/53641113 android开发中经常会遇到程序异常,而已常常会遇到一出现异常APP就自动重启了,而已如果你的项目中应用到Fragment的切换的话,会出行页面重叠的现象。今天为了解决这个问题看了不少大牛的博客。最后终于把问题解决了,下面就把解决的方法做一个介绍。总的问题...

weixin_30929295的博客 213

eCognition易康面向对象分类批量选择样本,批量导出shp

可以的,使用这个工具条最右边那个三角尺manual editing toolbar,这是用来直接指定类别的,咱们可以拿它选完以后把指定的类别转成训练样本。另一个好处是,这个选出来的样本可以直接导出成shp,但select sample是不可以的,只能导出TTAMask也就是栅格掩膜。如果要导出shp,要在转之前导出。中间那条有点点的红线就是我的鼠标轨迹,只要碰到的对象就会全部选中,然后一点3的那个按钮就直接全部划分为林地了,十分丝滑。在弹出来的工作条里,首先选择你的类别,比如这里选一个forest。

qq_61845364的博客 4068

教程 | 基于遥感生态指数(RSEI)模型的生态环境质量评价

使用数据:Landsat8 OLI数据,行列号:122036,时间:20210527。 使用软件:ENVI5.3、ArcGIS10.2 二、4个指数计算 下述的四个指数的计算均是通过ENVI软件中的Band math工具进行计算。 (1)绿度指数 在常用的植被指数当中,归一化植被指数 ( NDVI) 能够有效地反映植被的生长情况与植被 覆盖度等重要植被的物理性质,检测灵敏度高,能 够较为真实地展现区域的地表空间变化规律,已经得到广泛利用,本文采用 NDVI 指数来代表绿度指数。 在ENV

YW_remote的博客 1万+
上一篇: ANDROID “call to opengl es api with no current context”错误的解决
下一篇: JAVAThread 多线程学习
ProbuINg
博客等级 码龄14年 10粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值