【问题标题】:Is it possible to create some sort of global exception handler in Android?是否可以在 Android 中创建某种全局异常处理程序?
【发布时间】:2011-10-17 19:04:56
【问题描述】:

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

有时,我的应用在某个中间活动中崩溃。最终发生的情况通常是应用程序向后移动一两个活动。例如,如果我的应用程序在 Activity D 崩溃,应用程序可能会退回到 Activity C 或 B。但问题是,在这样的崩溃之后,输入数据处于如此奇怪的状态,以至于应用程序再次崩溃并显示力关闭对话框,一直回到 Activity A,主菜单。

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

【问题讨论】:

    标签: android exception-handling global


    【解决方案1】:
        Thread.setDefaultUncaughtExceptionHandler(new DefaultExceptionHandler()... );
    

    【讨论】:

    • 感谢您让我知道这件事。不幸的是,基于已经提出和回答的其他一些问题,我希望能够在 Android 上做的事情似乎是不可能的。
    【解决方案2】:

    扩展应用类

    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 文件中添加以下行作为应用程序属性

    android:name=".MyApplication"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2014-04-17
      • 2012-12-31
      • 2011-05-19
      相关资源
      最近更新 更多