Android全局异常处理(捕获异常,不弹出程序崩溃)

原创 2015年07月06日 19:55:13

在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连我们自己本身可能都接受不了。虽然我们在发布程序时总会经过仔细的测试,但是难免会碰到预料不到的错误。

今天就来自定义一个程序出错时的处理,类似iphone的闪退。(虽然闪退也是用户不愿意看到的,但是在用户体验上明显比那个原生的弹窗好多了)

/** 
 * 自定义的 异常处理类 , 实现了 UncaughtExceptionHandler接口  
 * 
 */  
public class CrashHandler implements UncaughtExceptionHandler {  
    // 需求是 整个应用程序 只有一个 MyCrash-Handler   
    private static CrashHandler INSTANCE ;  
    private Context context;  

    //1.私有化构造方法  
    private CrashHandler(){  

    }  

    public static synchronized CrashHandler getInstance(){  
        if (INSTANCE == null)  
            INSTANCE = new CrashHandler();  
        return INSTANCE;
    }

    public void init(Context context){  
        this.context = context;
    }  


    public void uncaughtException(Thread arg0, Throwable arg1) {  
        System.out.println("程序挂掉了 ");  
        // 在此可以把用户手机的一些信息以及异常信息捕获并上传,由于UMeng在这方面有很程序的api接口来调用,故没有考虑

        //干掉当前的程序   
        android.os.Process.killProcess(android.os.Process.myPid());  
    }  

}  
/** 
 * 在开发应用时都会和Activity打交道,而Application使用的就相对较少了。 
 * Application是用来管理应用程序的全局状态的,比如载入资源文件。 
 * 在应用程序启动的时候Application会首先创建,然后才会根据情况(Intent)启动相应的Activity或者Service。 
 * 在本文将在Application中注册未捕获异常处理器。 
 */  
public class CrashApplication extends Application {  
    @Override  
    public void onCreate() {  
        super.onCreate();  
        CrashHandler handler = CrashHandler.getInstance();  
        handler.init(getApplicationContext());
        Thread.setDefaultUncaughtExceptionHandler(handler);  
    }  
}  
<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="org.wp.activity" android:versionCode="1" android:versionName="1.0">  
    <application android:icon="@drawable/icon" android:label="@string/app_name"  
        android:name=".CrashApplication" android:debuggable="true">  
        <activity android:name=".MainActivity" android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  
    <uses-sdk android:minSdkVersion="8" />  
</manifest> 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android全局异常捕获并弹窗提示

Android 难免有崩溃的时候,但是崩溃了该如何处理呢?虽然那天有位同仁说 “既然崩溃了,用户体验就差了,心里会想这是毛APP,下次也不想用了” ,所以检查BUG以防崩溃是必须的,但是也需要一个后备...
  • hx7013
  • hx7013
  • 2016年12月14日 09:36
  • 1505

android httpClient 支持HTTPS的2种处理方式

android httpClient 支持HTTPS的2种处理方式 问题: 项目中Android https或http请求地址重定向为HTTPS的地址,相信很多人都遇到了这个异常(无终端认证...

Android全局异常处理(捕获异常,不弹出程序崩溃)

/** * 自定义的 异常处理类 , 实现了 UncaughtExceptionHandler接口 * */ public class CrashHandler implements...

Android全局异常处理(捕获异常,不弹出程序崩溃)

在做Android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连我们自己本身可能都接受不了。虽然我们在发布程序...

Android程序崩溃异常处理之自动发送邮件

from :  http://blog.csdn.net/android_cmos/article/details/51170916     由于自己最近在跟一个项目,怎么说呢,项目功能真的...

Android 通过Application捕获全局异常,防止程序崩溃退出

因为要对全局进行一个“监听”,因此我们可以把一个监听异常的方法放在Applcation中,而它的生命周期也就是整个app的生命周期。 我们写一个类实现UncaughtExceptionHandler...

android程序崩溃异常捕获

  • 2015年06月19日 07:25
  • 3KB
  • 下载

windows程序崩溃对话框和异常处理

经常碰到某些程序崩溃时弹出带红色叉叉的错误窗口或者是叫你选择调试或关闭的窗口,很碍眼。不过平时也没去理它,点掉就好。     今天客户反映我们的程序崩溃后就起不来了,其实我们为了方便无人化管...
  • ibingow
  • ibingow
  • 2011年12月26日 22:34
  • 7141
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android全局异常处理(捕获异常,不弹出程序崩溃)
举报原因:
原因补充:

(最多只允许输入30个字)