私のアプリには、アクティビティ a-> アクティビティ b-> アクティビティ a-> アクティビティ b... 無限に移動できるシナリオがあり、最終的には OOM になります。
「アクティビティを保持しない」動作のようにする方法を知っている人はいますか?たとえば、アクティビティは強制終了されてメモリを解放しますが、履歴には残っているため、ユーザーが戻ったときに再作成できますか?
私のアプリには、アクティビティ a-> アクティビティ b-> アクティビティ a-> アクティビティ b... 無限に移動できるシナリオがあり、最終的には OOM になります。
「アクティビティを保持しない」動作のようにする方法を知っている人はいますか?たとえば、アクティビティは強制終了されてメモリを解放しますが、履歴には残っているため、ユーザーが戻ったときに再作成できますか?
これは不可能です。Androidがアクティビティに戻るには、アクティビティがスタックに存在している必要があります。できることは、アクティビティが自分で管理しているデータを追跡することです。これにより、ユーザーがActivityAからActivityB、ActivityAに移動するときに、両方のアクティビティで使用できるスタックにデータパケットをプッシュし続けることができます。次に、 `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT'を使用して、あるアクティビティから次のアクティビティに移行できます。
この場合、ActivityAのインスタンスとActivityBのインスタンスは1つだけですが、スタックの最上位にあるデータパケットを確認するだけで、ユーザーが制御を取得するたびに異なるビューを表示できるはずです。ユーザーが戻るボタンを押したら、一番上のデータパケットをスタックからポップして、適切なアクティビティを開始する必要があります( `Intent.FLAG_ACTIVITY_REORDER_TO_FRONT'を使用して、新しいインスタンスを作成しないようにします)。