私のアプリを初めて実行するとき、ルートアクティビティで、ユーザーはデータベースからダウンロードするデータを決定する特定のオプションを選択する必要があります。
彼がそのオプションを選択すると、データがダウンロードされ、アプリケーションが実行されている限りそのデータを保持するシングルトンクラスに保持されます。(バックグラウンドでも)
私の問題は、ユーザーが(ホームボタンを使用して)しばらくアプリケーションを終了した後、Androidがアプリ内の一部のアクティビティを強制終了し、どういうわけかそれらを使用すると、重要なシングルトンクラスがリセットされることです。シングルトンに保持されているはずのデータにアクセスしようとすると、アプリがすべての種類のnull参照例外を受け取るようになります。
Android OSがアプリケーションを強制終了することを選択できる場合があることを理解していますが、ユーザーは最後にアクセスしたアクティビティからアプリケーションに戻ることができます。場合によっては、アプリケーション全体を強制終了し、ユーザーに最初からやり直すように強制することがあります。
解決策を探していたところ、ルートアクティビティに適用できる「android:alwaysRetainTaskState」属性について知りました。どうやらそれで、アンドロイドが私のアプリを殺すことを決定するときはいつでも、それはユーザーが彼に得るより高度な活動から始めることを許可するのではなく、少なくとも私がデータを再ダウンロードできる最初の活動から始めることをユーザーに強制するでしょうnull例外。
ただし、アプリケーションに適用したときは機能せず、アプリケーションに戻ったときは、空のシングルトンインスタンスを使用して高度なアクティビティから開始していました。
「android:clearTaskOnLaunch」も試してみましたが、うまくいきましたが、ユーザーがアプリに戻るたびに最初からやり直さなければならないので、やり過ぎです。Androidがアプリを強制終了することを決定した場合にのみ発生するようにします。
私が間違っていることはありますか?シングルトンを存続させるためのより良い解決策がある可能性はありますか?
ありがとう!