我有 2 个活动如下:
public class MainActivity extends Activity {
....
profile.login(new onCallback()) {
@Override
public void onResult(int result) {
final Intent i = new Intent(MainActivity.this, DetailActivity.class);
startActivity(i);
}
}
....
}
public class DetailActivity extends Activity {
....
}
profile.login 在 AsyncTask 上运行并在有结果时回调。一旦收到结果,它将开始第二个活动。
以下是故障步骤:
- 在 MainActivity 上,按下登录按钮。
- 按返回关闭应用程序。
- 该应用程序已关闭,但一段时间后会弹出第二个活动并立即强制关闭。
我跟踪生命周期事件,logcat 显示:
- MainActivity.onClickLogin
- DetailActivity.onCreate 已启动。
- DetailActivity.onCreate 结束。
- MainActivity.onDestroy 启动。
- MainActivity.onDestroy 结束。
它是非常依赖时间的,只发生在“DetailActivity.onCreate 结束”和屏幕不显示之间。一旦 DetailActivity 屏幕显示,按 Back 不会导致 MainActivity 销毁。它只是按预期破坏了 DetailActivity:
- MainActivity.onClickLogin
- DetailActivity.onCreate 已启动。
- DetailActivity.onCreate 结束。
- DetailActivity.onDestroy 启动。
- DetailActivity.onDestroy 结束。
我的问题是:
由于 DetailActivity 已经创建(onCreated 结束),是否应该将返回键事件发送到 DetailActivity 并导致它销毁?为什么将密钥发送到 MainActivity?
知道如何应对吗?
我正在使用的 Android 版本是 4.0.x