アプリのタイトル (オーバーレイされた 2 つのアニメーション イメージビュー)、オーバーレイされた 2 つのアニメーション画像、および 3 つのボタンを表示するメイン アクティビティを持つアプリを開発しています。このアクティビティには、他のアクティビティで使用されるものと同じ背景画像もあります。
アプリはあるアクティビティから別のアクティビティに流れ、最終的に、このメイン アクティビティが再び起動されます (FLAG_ACTIVITY_CLEAR_TOP を使用)。すべて正常に動作しますが、数回リロードすると、Android 2.1 デバイスでメモリ不足エラーが発生します。
最初は、drawable フォルダーにすべての画像があり、メイン アクティビティに 5 回到達した後に問題が発生しました。次に、ビットマップのサイズを調整し、密度に応じて適切なフォルダーに配置したところ、メインアクティビティに 14 回到達した時点で問題が発生しました。ここで、テスト目的で背景画像を削除したところ、20 回以上再起動した後にメモリ不足が表示されます。
また、ホームボタンを押してからアプリに戻ると、問題はずっと後になるまで表示されないようです。
さらに、Nexus 5 でアプリをテストしましたが、メモリ不足は発生しませんでした。
それで...それは私の電話の問題ですか?Android 2.1で?
ありがとう!
[編集] 問題は特定できたと思いますが、それでも奇妙な動作です。
たとえば、ある時点で、アクティビティを再作成する必要があります。「再作成」メソッドは私の最小 API レベル (7) では使用できないため、次のように実行します。
Intent refresh = new Intent(getActivity(), getActivity().getClass());
refresh.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(refresh);
どちらが正しいと思います。onClickListeners を解放し、onStop() でアニメーションをクリアします。ただし、onStop() にブレークポイントを設定すると、予期したときに呼び出されません。アクティビティが再作成されるとすぐに呼び出されることもありますが、数秒後に呼び出されることもあります。
ただし、ホーム ボタンを押すと、onStop が適切に呼び出され、アプリケーションに戻るとすべて正常に動作します。