開発中のアプリケーションで発生しているこの動作に困惑しています...
短い:
ユーザーが [戻る] ボタンを押してアプリケーションを終了し、[最近] ボタンを押してアプリケーションを再起動したときに、インテント データが消去されません。(それ以外の場合、インテント データは消去されます)
長いです:
URI スキームから渡されたデータを収集するために使用されるスプラッシュ スクリーンを備えたアプリケーションがあります。次に、データをメイン アクティビティに転送するインテントを設定します。メイン アクティビティにはフラグメントがあり、マスター/詳細テンプレートに基づいています。
ホームボタンを押してからアプリケーションに戻る、最近のアプリボタンを押してからアプリケーションに戻るなど、すべての場合にインテント データがクリアされます。インテント データがクリアされない唯一のケースユーザーが [戻る] ボタンを押してから [最近のアプリ] ボタンを押して、アプリケーションに戻るときです。
インテントに関連するコードのスニペット:
// Splash Screen Activity
@Override
protected void onPostExecute(Void result) {
// Data is done downloading, pass notice and app ids to next activity
Intent intent = new Intent(getBaseContext(), ListActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("id1", id1);
intent.putExtra("id2", id2);
intent.putExtra("id3", id3);
startActivity(intent);
finish();
}
// ListActivity retrieving intent data
Intent intent = getIntent();
if (intent != null) {
this.id1 = intent.getExtras().getString("id1");
this.id2 = intent.getExtras().getString("id2");
this.id3 = intent.getExtras().getString("id3");
}
// ListActivity clearing intent data
@Override
public void onPause() {
super.onPause();
// Clear intent data
Intent intent = getIntent();
intent.putExtra("id1", "");
intent.putExtra("id2", "");
intent.putExtra("id3", "");
}
また、intent.removeExtra("id1") を使用してみましたが、それもうまくいきませんでした。
何が起こっているのですか?インテント データをクリアするために onPause() が常に呼び出されているにもかかわらず、Android が古いインテントを保持しているかのようです。