Android 重新启动调用活动时出现未捕获异常?

Android 重新启动调用活动时出现未捕获异常?,android,android-manifest,Android,Android Manifest,我有一个大型android应用程序,最近我发现在任何未捕获的异常中,异常都会显示在DDMS日志中,然后调用父活动会重新启动(onCreate get被调用)。理想情况下,应用程序应该退出 我们正在使用ARCA崩溃应用程序报告,但对此进行了评论,仍然看到相同的活动重新启动。我正在调用startActivityForResults,android清单中的android:finishOnTaskLaunch对活动和子活动均为true 是否有关于导致异常上活动重新启动的原因的指针 我相信这是力的预期行为

我有一个大型android应用程序,最近我发现在任何未捕获的异常中,异常都会显示在DDMS日志中,然后调用父活动会重新启动(onCreate get被调用)。理想情况下,应用程序应该退出

我们正在使用ARCA崩溃应用程序报告,但对此进行了评论,仍然看到相同的活动重新启动。我正在调用startActivityForResults,android清单中的android:finishOnTaskLaunch对活动和子活动均为true


是否有关于导致异常上活动重新启动的原因的指针

我相信这是力的预期行为。用户收到异常通知,当用户确认异常时,系统会尝试使其尽可能接近当前状态,即最后一个有效的活动

我不确定为什么不希望出现这种行为,但您可能需要想出自己的方法来识别由于崩溃而重新启动的活动,并立即在onCreate中退出

编辑: 我刚刚组装了一个测试应用程序:

public class Activity1 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button button = (Button)findViewById(R.id.button);
        button.setText("test");
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Activity1.this, Activity2.class);
                startActivityForResult(intent, 0);
            }
        });
    }
}

public class Activity2 extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button button = (Button)findViewById(R.id.button);
        button.setText("test2");
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                throw new RuntimeException();
            }
        });
    }
}
当您在Test2中按下按钮时,将引发异常。Android显示一个强制关闭对话框,当您在对话框中单击OK时,它会带您返回测试。这就是我所说的默认行为

处理这个问题的最好方法是修复你的应用程序,这样它就不会抛出异常


最后,您可以添加处理未捕获异常的处理程序:。这将防止在第一时间显示“强制关闭”对话框,因此您可以随心所欲。

谢谢玛丽亚。。。这不是Android应用程序的默认行为。如果您尝试任何示例应用程序并发生崩溃,则应用程序将退出。我试着在另一个简单的应用程序中模拟这个案例,结果它“完全”崩溃了。我一直在寻找什么可能导致应用程序重新启动的指针。关于“为什么”,当活动重新启动时,应用程序处于不良状态,我不想在此时处理代码中所有活动的无效状态。关闭应用程序并允许acra/marketplace为我报告异常似乎更好。Mayra。。。谢谢与使用StartActivityForResult不同,如果您使用StartActivity,则其行为几乎没有什么不同。无论如何,我们将继续清除其他异常。谢谢你的见解。