6

私は非常に退屈な問題を抱えています。アプリがバックグラウンドに移行すると、LogCatが示すようにプロセスが強制終了されることがあります。

INFO/ActivityManager(187): Low Memory: No more background processes.
INFO/ActivityManager(187): Process com.app.myapp (pid 20681) has died.
INFO/WindowManager(187): WIN DEATH: Window{40592708 com.app.myapp/app.myapp.dashboard.Dashboard paused=false}
ERROR/InputDispatcher(187): channel '408b1d40 app.myapp/app.myapp.menus.products.Promotions (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
ERROR/InputDispatcher(187): channel '408b1d40 app.myapp/app.myapp.menus.products.Promotions (server)' ~ Channel is unrecoverably broken and will be disposed!
INFO/WindowManager(187): WIN DEATH: Window{408b1d40 app.myapp/app.myapp.menus.products.Promotions paused=false}
INFO/ActivityManager(187): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10100000 cmp=app.myapp/.Main } from pid 187
INFO/ActivityManager(187): Start proc app.myapp for activity app.myapp/.menus.products.Promotions: pid=20721 uid=10062 gids={3003, 1015}

次に、タスクスイッチャー(ホームを長押し)を介してアプリに戻ろうとすると、最後に開いたアクティビティに戻ろうとします...そしてクラッシュします。

アプリ全体が閉じられたときにメインを開いて、最初から開かないのはなぜですか?

ERROR/InputDispatcherエラーが常に表示されるとは限りません。

アップデート:

問題は...アプリケーションは復元されますが、(ハッシュマップとして)ダウンロードされたオブジェクトは復元されません...そのため、それらにアクセスすると...「問題」が発生します...

更新2:

アプリケーションに必要なデータが含まれている場合、またはそれがnullである場合(この場合はアプリを再起動します)、BaseActivityでonCreate(他のすべてによって拡張される)を確認することで、問題を解決できました。

より洗練された解決策、または少なくともアプリケーションが強制終了された場合にアプリケーションを再起動したいことをデバイスに伝える方法はありますか?

このリンクは問題を理解するのに役立ちました...そしてアプリケーションからのデータを保存する方法について明確な答えがないことを知っています:Androidでグローバル変数を宣言する方法は?

更新3:

そこで、アプリケーションデータを正しく保存する方法について具体的に質問しました。これは、同じ質問を持つ人に役立つ可能性があります:Android:アプリケーションシングルトンクラスに保存されたデータを保存するための最良の方法

4

1 に答える 1

3

私が理解している限りでは、ユーザーがアプリケーションを閉じなかったため、元に戻ります。ただし、オープニングアクティビティから渡されたアクティビティのバンドルデータにアクセスしていますか?もしそうなら、無効な状態でフォアグラウンドに戻ってくるアプリを解決するために実装できるバンドルインスタンスの保存および復元機能を調べたいと思うかもしれません。

わかりやすくするために編集します。アプリケーションは、バックグラウンドでメモリが不足しているためにOSによって強制終了されたため、以前の状態に復元されます。タスクを元に戻すと、以前の状態に復元され、無効/存在しないバンドルデータが原因で、そのアクティビティが再開されたときにクラッシュが発生する可能性があります。

于 2011-05-18T15:47:34.587 に答える