以下の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 で実行され、結果がある場合はコールバックされます。結果が受信されると、2 番目のアクティビティが開始されます。
トラブルの手順は次のとおりです。
- MainActivity で、ログイン ボタンを押します。
- 戻るを押してアプリを閉じます。
- アプリは閉じられますが、しばらくすると 2 番目のアクティビティがポップアップし、すぐに強制終了されます。
ライフ サイクル イベントをトレースすると、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 が終了している) ため、back キー イベントを DetailActivity に送信して破棄する必要がありますか? キーが MainActivity に送信されるのはなぜですか?
これに対抗する方法はありますか?
私が取り組んでいる Android のバージョンは 4.0.x です