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

转自:here

在Android应用开发中,偶尔会因为某些异常导致正在使用的应用出现异常并强制关闭,这样导致不友好的用户体验。为了解决这个问题,我们需要捕获出现的异常并做处理。在Java中有两类异常,分别是Error和RuntimeException,前者是不需要我们去处理的,我们处理的往往是后者。那么如何捕获线程在运行时的异常呢,我们可以使用自定义类实现

Thread.UncaughtExceptionHandler接口并复写uncaughtException(Thread thread, Throwable ex)方法来实现对运行时线程进行异常处理。在Android中我们可以实现自己的Application类,然后实现UncaughtExceptionHandler接口,并在uncaughtException方法中处理异常,这里我们关闭App并启动我们需要的Activity,下面看代码:

[java] view plaincopy

  1. public class MyApplication extends Application implements
  2. Thread.UncaughtExceptionHandler {
  3. @Override
  4. public void onCreate() {
  5. super.onCreate();
  6. //设置Thread Exception Handler
  7. Thread.setDefaultUncaughtExceptionHandler(this);
  8. }
  9. @Override
  10. public void uncaughtException(Thread thread, Throwable ex) {
  11. System.out.println("uncaughtException");
  12. System.exit(0);
  13. Intent intent = new Intent(this, MainActivity.class);
  14. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
  15. Intent.FLAG_ACTIVITY_NEW_TASK);
  16. startActivity(intent);
  17. }
  18. }

最后需要在Manifest中配置Application的标签android:name=".MyApplication",让整个应用程序使用我们自定义的Application类,这样就实现了当应用遇到崩溃异常时重启应用的效果。

我们在任意一个Activity中主动抛出下面异常,就会发现应用遇到异常后重启了,如果不处理的话,应用在遇到异常后就关闭了。

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

时间: 2024-11-27 14:52:20

转:Android应用崩溃后异常捕获并重启的相关文章

Android应用崩溃后异常捕获并重启并写入日志

在Android开发时,有时会因为一些异常导致应用报错,偶尔会因为错误 而崩溃,导致用户体验下降,为了解决这问题,我们就要对这样的异常处理: 代码如下: CrashHandler.java import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import andr

Android应用源码之捕获全局异常

Android应用源码之捕获全局异常 本项目就是一个简单的全局异常捕捉例子,捕捉到异常以后可以把异常信息写入文件以供后来分析或者用友好的方式进行提示后再退出程序. 下载地址:http://www.devstore.cn/code/info/630.html

捕获android程序崩溃日志

主要类: package com.example.callstatus; import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.Thread.UncaughtExceptionHandler; import java.lang.reflect.Field; import java.net.Unkn

Android程序崩溃异常收集框架

最近在写Android程序崩溃异常处理,完成之后,稍加封装与大家分享. 我的思路是这样的,在程序崩溃之后,将异常信息保存到一个日志文件中,然后对该文件进行处理,比如发送到邮箱,或发送到服务器. 所以,第一步是先定义一个接口,用于在保存好日志之后的回调.代码如下: /* * @(#)CrashListener.java Project: crash * Date:2014-5-27 * * Copyright (c) 2014 CFuture09, Institute of Software, *

【IOS】异常捕获 拒绝闪退 让应用从容的崩溃 UncaughtExceptionHandler

虽然大家都不愿意看到程序崩溃,但可能崩溃是每个应用必须面对的现实,既然崩溃已经发生,无法阻挡了,那我们就让它崩也崩得淡定点吧. IOS SDK中提供了一个现成的函数 NSSetUncaughtExceptionHandler 用来做异常处理,但功能非常有限,而引起崩溃的大多数原因如:内存访问错误,重复释放等错误就无能为力了,因为这种错误它抛出的是Signal,所以必须要专门做Signal处理.首先定义一个UncaughtExceptionHandler类,代码如下: #import <Found

4.异常捕获后再次抛出

4.异常捕获后再次抛出 情况一:捕获后抛出原来的异常,希望保留最新的异常抛出点--fillStackTrace 情况二:捕获后抛出新的异常,希望抛出完整的异常链--initCause 1.捕获后重新抛出捕获的异常 在函数中捕获了异常,在catch模块中不做进一步的处理,而是向上一级进行传递 catch(Exception e){ throw e; } public class ReThrow { public static void f()throws Exception{ throw new

.net mvc中AOP 异常捕获后返回自定义的Json

.net mvc中封装了一些特性可以实现AOP,如常用的HandleErrorAttribute,ActionFilterAttribute,AuthorizeAttribute.自定义一个特性,继承这些特性,并重写里面的方法就可以AOP切入到Action中的关注点.本篇文章主要对笔者在使用HandleErrorAttribute的过程中遇到的一个问题进行分享. 我们在action中会用try..catch..进行异常处理,笔者在catch中返回一个json(标示失败).我发现所有的action

Android系统崩溃日志反馈(本文摘至CSDN原作者liuhe688)

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序. 我们先建立一个crash项目,项目结构如图: 我们在这里故意制造了一个潜在的运

iOS异常捕获

文章目录 一. 系统Crash 二. 处理signal 下面是一些信号说明 关键点注意 三. 实战 四. Crash Callstack分析 – 进?一步分析 五. demo地址 六. 参考文献 前言 今天在ios高级群,有朋友问到iOS的异常捕捉的问题,这一块以前也没有研究过,趁此机会研究了一把.并写了一个demo,如有需要可以在文章最下面去下载. 在阅读文章之前,建议大家在阅读完此篇文章后可以阅读漫谈iOS Crash收集框架,了解一下原理. 开发iOS应用,解决Crash问题始终是一个难题