0

アプリケーションのグローバルデータを保存する

タスクがバックグラウンドに移行すると、Androidはシングルトンインスタンスをクリアすると誰かが言った。それは本当ですか?

(DDMSを使用して)フォアグラウンドタスクを強制終了しようとすると、アプリケーションが自動的に再起動することに気付きました。デーモンが必要ですよね。

プロセスの再起動として、アプリケーションのonCreateを呼び出すことでアプリを再初期化できるため、フォアグラウンドアプリケーションを再起動しても安全です。

しかし、私はバックグラウンドタスク/アプリケーションについて混乱しています.androidはバックグラウンドタスクを強制終了し、フォアグラウンドアプリと同じように再起動しますか?(私はバックグラウンドアプリケーションを強制終了しようとしますが、再起動せずに終了します)またはdalvikは静的インスタンスをクリアしてリサイクルします?

dalvikが本当にシングルトンをクリアしている場合、どうすればそれを回避できますか?

4

1 に答える 1

1

各 Android アプリケーションはプロセスで実行されます。タスク (バックグラウンドまたはフォアグラウンドに関係なく) が強制終了されると、実際にはプロセスが強制終了されます。Java アプリケーションが JVM 上で実行されるのと同じように、各 JVM インスタンスはプロセスです。

JVM とは異なり、dalvik オブジェクト管理には魔法はありません。dalvik がシングルトン インスタンスをクリアするとは思わない。参照のないオブジェクト インスタンスは GC で明確になりますが、シングルトンはそうではありません。

Android アプリケーションでは、メイン スレッドはイベント ディスパッチ スレッドです。ループで実行され、イベントを適切なアクティビティ、ウィジェット、またはサービスにディスパッチします。アプリケーションの作成は、実際にはイベント コールバックの実装です。作成するコードには main() はなく、メイン スレッドを所有することはありません。イベントが発生すると、アンダーレイ フレームワークがコードを呼び出します。タスクがバックグラウンドに変わるとき、つまりアクティビティが表示されないとき、UI イベントは生成されないため、メイン スレッドがイベント キューで待機していることがわかります。記事「Painless Threading 」では、Android アプリケーションで使用されるスレッド モデルについて説明しています。

于 2011-11-30T04:24:22.937 に答える