2

私のアプリには、アクティビティ a-> アクティビティ b-> アクティビティ a-> アクティビティ b... 無限に移動できるシナリオがあり、最終的には OOM になります。

「アクティビティを保持しない」動作のようにする方法を知っている人はいますか?たとえば、アクティビティは強制終了されてメモリを解放しますが、履歴には残っているため、ユーザーが戻ったときに再作成できますか?

4

1 に答える 1

0

これは不可能です。Androidがアクティビティに戻るには、アクティビティがスタックに存在している必要があります。できることは、アクティビティが自分で管理しているデータを追跡することです。これにより、ユーザーがActivityAからActivityB、ActivityAに移動するときに、両方のアクティビティで使用できるスタックにデータパケットをプッシュし続けることができます。次に、 `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT'を使用して、あるアクティビティから次のアクティビティに移行できます。

この場合、ActivityAのインスタンスとActivityBのインスタンスは1つだけですが、スタックの最上位にあるデータパケットを確認するだけで、ユーザーが制御を取得するたびに異なるビューを表示できるはずです。ユーザーが戻るボタンを押したら、一番上のデータパケットをスタックからポップして、適切なアクティビティを開始する必要があります( `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT'を使用して、新しいインスタンスを作成しないようにします)。

于 2013-01-24T19:49:02.690 に答える