を漏洩しましたそのインタフェースのために。その出口で古いデフォルトのキャッチされていない例外ハンドラを復元することはありません。 A→B→A→B ...を実行すると、アクティビティBがリークしたためメモリ不足例外が発生します。なぜ活動Bが漏れたのですか?活動は、2つの活動を持っているアプリがあるとし
答えて
これは間違ったアーキテクチャです。連鎖検索では、それぞれActivity
の単一のインスタンスしか持たないようにしてください。 startActivity()
を呼び出し、使用するIntent
にIntent.FLAG_ACTIVITY_REORDER_TO_FRONT
と設定して、別のActivity
インスタンスを切り替える必要があります。また、Intent
に「追加」として表示するデータを追加します。
バックボタンを使用してチェーンを戻すことができるようにするには、各Activity
は、ユーザーがいつでもそのページを再作成するために必要なデータを含むスタックを管理する必要があります。 onCreate()
とonNewIntent()
のデータ(「追加」からのデータ)をスタックにプッシュして表示する必要があります。その後、を上書きし、startActivity()
を呼び出し、Intent
にIntent.FLAG_ACTIVITY_REORDER_TO_FRONT
を設定して、前のActivity
に戻ります。また、「戻る」を希望することを示す「余分な」をIntent
に追加します。 onBackPressed()
では、残っているActivity
のデータスタックから一番上の要素を破棄する必要があります。これにより、ユーザがActivity
に戻ったときにスタックが正しいことが保証されます。
onNewIntent()
ユーザーがちょうどActivity
を入力した場合、管理対象データのスタックの上に既にあるデータが表示されます。
このように、各Activity
のインスタンスを1つしか持たない場合、ユーザーは1日中一連のアクティビティを連鎖でき、BACKボタンは常に機能し、メモリが不足する心配はありません。
taskAffinity
またはフラグなどを使用してこれを実行しようとすると機能しません。あなたの時間を無駄にしないでください。それはまた悪いプログラミングスタイルです。
これは明らかです。 とメモリ例外使用
のために追加のマニフェスト
アンドロイド> V3
<application
....
android:largeHeap="true">
- 1. 活動は、私は3つの活動を持って活動
- 2. Applicationクラスは、私が活動Aで活動Aと活動Bを持って
- 3. 私は2つの活動を持っている別のアクティビティ
- 4. SharedPreferanceは、私が1つの活動で、このコードを持って活動
- 5. 私は2つの活動持つMVP
- 6. 私は、ログイン画面の15%を持っている私の活動で活動
- 7. 1つの活動で2つの異なる活動
- 8. は正しい、私は3つの断片持って活動
- 9. Androidの活動:定期的に、私は2つの活動を持って同じデータソース
- 10. あなたは、私が活動でこれを持っているAndroidの
- 11. ユーザーが私の主な活動にはこれがあるアプリ
- 12. アクティビティインジケータは、私が活動の指標には2つの問題を持っている
- 13. 戻るボタンは、いつも私が3つの活性を有している主な活動
- 14. 私が持っている活字体
- 15. 活動が壊れるのを待つ
- 16. なぜアンドロイド:listSelectorが誤っ活動への活動から再現する
- 17. LocalBroadcastManager、冗長な活動、活動のライフサイクル
- 18. 活動が
- 19. 活動が
- 20. 活動が
- 21. エラーが活動
- 22. 活動に提示し、その活動が
- 23. は私が5つの活性を有する複数の活動
- 24. ツールバーは、私はツールバーを持っている活動では半透明のステータスバー
- 25. 私は、次のアクティビティコードを持って活動
- 26. 活動を開始する意向 - しかし、前に持っていない
- 27. はsingleTop活動
- 28. 活動は
- 29. は活動
- 30. 活動