android - 是否无法在UncaughtExceptionHandler中启动一个Activity

标签 android

我发现在 UncaughtExceptionHandler 中启动新 Activity 时它不起作用。我的意思是不显示烦人的 Android 崩溃对话框。另一方面,我想开始一个新的 Activity 来向用户表明我们遇到了一个严重的错误,你是想退出还是继续使用这个应用程序,但仍有可能发生一些奇怪的事情。

我什至尝试通过

在 UncaughtExceptionHandler 中重启应用程序
final Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());  
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
    startActivity(intent); 

但是,我又倒霉了。它也不起作用......

最佳答案

我尝试在崩溃发生后重新启动我的应用程序。我在您的应用程序扩展类中捕获了所有未捕获的异常。在异常处理程序中做一些关于异常的事情并尝试设置 AlarmManager 以重新启动我的应用程序。这是我如何在我的应用程序中执行此操作的示例,但我只将异常记录到数据库。

public class MyApplication extends Application {
    // uncaught exception handler variable
    private UncaughtExceptionHandler defaultUEH;

    // handler listener
    private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
        new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, Throwable ex) {

                // here I do logging of exception to a db
                PendingIntent myActivity = PendingIntent.getActivity(getContext(),
                    192837, new Intent(getContext(), MyActivity.class),
                    PendingIntent.FLAG_ONE_SHOT);

                AlarmManager alarmManager;
                alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
                alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
                    15000, myActivity );
                System.exit(2);

                // re-throw critical exception further to the os (important)
                defaultUEH.uncaughtException(thread, ex);
            }
        };

    public MyApplication() {
        defaultUEH = Thread.getDefaultUncaughtExceptionHandler();

        // setup handler for uncaught exception 
        Thread.setDefaultUncaughtExceptionHandler(_unCaughtExceptionHandler);
    }
}

关于android - 是否无法在UncaughtExceptionHandler中启动一个Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30255905/

相关文章:

android - 添加 cookie 以改造 2 请求

java - Android MediaPlayer `Prepared` 和 `OnPlayStarted` 问题

android - React Native- 开发服务器返回 500

javascript - 有没有办法在没有访问 token 的情况下调用 instagram api

java - 两个布局的相同 Java 文件 (XML)

java - 如何检测 RecyclerView 是否为空?

java - Fragment 中没有 onActivityResult()。对于应用内结算

使用 Mockito 时不会模拟 Android 方法

java - 在动画监听器中区分 2 个动画

android - Kotlinx 从错误的布局中注入(inject) View