3

リストビューを備えた単純なアプリケーションがあります。ユーザーがリスト項目をタップすると、新しいアクティビティが開始されます

Intent eventdetails = new Intent(HomeActivity.this,EventDetailsActivity.class);
eventdetails.putExtra("eventId", ev.getId());
eventdetails.putExtra("eventDate", ev.getEnglishDate());
startActivity(eventdetails);

EventDetailsActivity が開始されるとすぐに、HomeActivity が破棄されます (onDestroy が呼び出されます)。ユーザーが EventDetailsActivity から戻るボタンを押すと、HomeActivity が再作成されますが、これは望ましくありません。

そもそも HomeActivity が殺される理由を理解できませんでした。udb を使用してアクティビティ スタックも確認しましたが、HomeActivity は表示されません。

Running activities (most recent first):
Run #0: ActivityRecord{43938cc8 com.app.event/.EventDetailsActivity}

これは、Samsung Galaxy Note 2 でのみ発生しています。

なぜこれが起こっているのでしょうか?

4

4 に答える 4

7

これは、ユーザーがこの設定を有効にしている場合に発生します

設定に移動->開発者向けオプション


APPS カテゴリ (下にスクロールして表示) で、[アクティビティを保持しない (ユーザーが離れるとすぐにすべてのアクティビティを破棄する)] オプションを参照してください。

このオプションが選択されているかどうかを確認します

于 2013-12-02T10:01:35.433 に答える
3
Intent eventdetails = new Intent(HomeActivity.this,EventDetailsActivity.class);
eventdetails.putExtra("eventId", ev.getId());
eventdetails.putExtra("eventDate", ev.getEnglishDate());
eventdetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
eventdetails.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(eventdetails);
HomeActivity.this.finish();

このコードを試して、役立つかどうか教えてください

于 2013-12-02T10:00:50.483 に答える
0

これは、android がリリース アクティビティのプロセスを管理するためです。前のアクティビティを終了する場合は、開始アクティビティの後にこれを追加します。

HomeActivity.this.finish();

フラグを使用して以前のアクティビティをクリアできます

eventdetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
eventdetails.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

または両方:

Intent eventdetails = new Intent(HomeActivity.this,EventDetailsActivity.class);
eventdetails.putExtra("eventId", ev.getId());
eventdetails.putExtra("eventDate", ev.getEnglishDate());
eventdetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
eventdetails.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(eventdetails);
HomeActivity.this.finish();

問題の解決に役立つことを願っています。

于 2013-12-02T10:12:16.467 に答える