是否有可能在Android中创建某种全局异常处理程序?

时间:2011-08-01 21:27:37

标签: android exception-handling global

我的应用程序包括一系列活动,用户必须通过这些活动以线性方式进行。假设这一系列活动看起来像这样:A(代表主菜单),B,C,D,E。用户继续这样:A - > B - > C - > D - > E.在每项活动中,用户必须输入数据或允许设备自动获取数据(例如通过网络或蓝牙)。

偶尔,我的应用程序会在其中一个中间活动中崩溃。通常情况下,最终发生的事情是该应用程序会移回一两个活动。例如,如果我的应用程序在活动D中崩溃,则应用程序可能会移回活动C或B.但问题是,在发生此类崩溃后,输入数据处于如此奇怪的状态,以至于应用程序再次崩溃并显示强制关闭对话框,一直回到活动A,即主菜单。

如何捕获导致这些崩溃在整个应用程序中全局崩溃的异常,以便我可以清理数据并优雅地允许用户返回主菜单?

2 个答案:

答案 0 :(得分:3)

扩展应用程序类

import android.app.Application;
import android.util.Log;

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {

            @Override
            public void uncaughtException(Thread thread, Throwable ex) {
                Log.e("MyApplication", ex.getMessage());            

            }
        });
    }
}

在AndroidManifest.xml文件中添加以下行作为Application属性

android:name=".MyApplication"

答案 1 :(得分:0)

    Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler()... );