アプリケーションの状態/シングルトンを保存するのに問題があります。
アプリケーションがロード画面(アクティビティ)を開始すると、シングルトンがWebサービス呼び出しからの値で初期化されます(ネットワークアクセスはメインスレッドで実行できないことに注意してください)。
シングルトンが作成されたら、メインアクティビティを開きます。レイアウトを作成するには、シングルトンの値が必要であることに注意してください。
ここで、アプリがバックグラウンドで実行され、そこで強制終了されたと仮定します(たとえば、メモリが不足しているため)。アプリが強制終了されると、シングルトンインスタンスが削除されます。アプリに戻ると、メインのアクティビティを再現しようとします。前述したように、レイアウトを構築するにはシングルトンの値が必要であるため、NullPointerExceptionが発生します(シングルトンのメンバーにアクセスしようとすると、もう存在しないため)。
アプリが強制終了された後、最初の読み込みアクティビティを開始するようにAndroidに指示することはできますか?レイアウトを再作成する前にシングルトンを更新できれば素晴らしいのですが、ネットワーク呼び出しをメインスレッドで実行できないため、更新が完了するまでブロックされないため、これは問題のようです。すべてのアクティビティonStopでシングルトンを保存し、onCreateメソッドで再作成できると思いますが、これは少し予測が難しいようで、一貫性のない状態になる可能性があります...
別の方法は、常にonStopでアクティビティを終了することですが、これにより、アプリが強制終了されていなくても、ユーザーが最後に使用したタブなどが失われるため、これは適切なオプションではありません。
これを解決する方法について何かアイデアはありますか?