gpt4 book ai didi

android - 未捕获的异常重新启动调用 Activity ?

转载 作者:行者123 更新时间:2023-11-29 22:30:00 26 4
gpt4 key购买 nike

我有一个大型 Android 应用程序,最近我看到在任何未捕获的异常中,异常显示在 DDMS Logcat 中,随后调用父 Activity 被重新启动(onCreate 被调用)。理想情况下,应用程序应该直接退出。

我们正在使用 ARCA 应用程序崩溃报告,但将其注释掉后仍然会看到相同的 Activity 重新启动。我正在调用 startActivityForResults 并且 android list 对于 Activity 和子 Activity 具有 android:finishOnTaskLaunch true。

关于可能导致异常重新启动 Activity 的任何指示?

最佳答案

我相信这是强制关闭的预期行为。用户会收到异常通知,当他们确认时,系统会尝试让他们尽可能回到当前状态,即最后一个有效的 Activity 。

我不确定为什么不需要这种行为,但您可能需要想出自己的方法来识别 Activity 因崩溃而重新启动并立即在 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 显示强制关闭对话框,当您在对话框中单击“确定”时,它会将您带回测试。这就是我所说的默认行为。

处理此问题的最佳方法是修复您的应用,使其永远不会抛出异常。

作为最后的手段,您可以添加一个处理程序来处理未捕获的异常:uncaughtExceptionHandler .这可以防止强制关闭对话框首先显示,因此您可以随心所欲。

关于android - 未捕获的异常重新启动调用 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4466529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com