1

私のアプリケーション クラスには、ランチャー画面から起動されるすべてのアクティビティで使用されるオブジェクトがあります。問題は、メモリが少ない場合、システムが自動的にアプリケーションを再起動することです ([設定] -> [アプリケーション] -> [実行中のプロセス] タブで確認できます)。再起動しているため (アプリがバックグラウンドになると発生します)、全体で使用しているオブジェクトが null にリセットされています。

私のシナリオ:

私の Launcher アクティビティでは、DB にアクセスしてスレッドで値を取得し、Setter と Getter を使用して Application クラスで Object 値を設定しています。

それを設定した後、私はそこから 4 つのアクティビティに移動しています A(ランチャー) -> B -> C -> D

現在、バックグラウンドに移行しており、デバイスが低メモリで実行されています。この時点で (つまり、バックグラウンドで) プロセスが強制終了され、再起動されます。

再起動時にオブジェクトが null にリセットされます。最近のリストまたはランチャーからアプリを起動すると、上記の場合はバックグラウンドに移動した場所から最後のアクティビティが起動されますが、アクティビティ D にアクセスしている場所です。 Null ポインターをスローするオブジェクト。

私の質問は、

  1. システムがオブジェクトを強制終了したときにオブジェクトをアプリケーション クラス レベルで保存する方法はありますか (Activity onSaveInstanceState で行うように)。
4

2 に答える 2

0

オブジェクトを再構築するために、共有設定を使用してオブジェクトに関するデータを保存するなどの操作を実行できます。(データベース、ローカル ファイルなども使用できます)。

しかし、特定の質問から少し逸脱することができれば、メモリ上の理由でアプリが強制終了される理由を知っていますか? 本当にローエンドのデバイスまたはハードウェアをターゲットにしていますか? それとも、アプリを最適化してメモリを少し保存/再利用する必要があるのでしょうか?

于 2014-04-03T13:54:54.630 に答える