2017-06-29 11 views
0

例:私がいくつかのサービスを開始し、このサービスで別のスレッドを作成すると、サービスがシステムによって殺され、他のAndroidコンポーネント(サービス/アクティビティ、e.t.c)も殺されます。しかし、スレッドとアプリケーションのプロセスはまだ生きています。この場合、Application.getInstanceにアクセスできますか?そして、アプリケーションオブジェクトが破壊されたとき?Android Application.getInstanceは常に存在しますか?

答えて

1

サービスがシステムによって殺され、他のAndroidコンポーネント(サービス/アクティビティ、e.t.c。)も殺されます。しかし、スレッドとアプリケーションのプロセスはまだ生きています。

その組み合わせは存在しません。

Androidはプロセスを終了させて​​システムRAMを解放します。それでおしまい。プロセスが「まだ生きている」—のコンポーネントが「殺される」唯一の理由—は、何かが破壊された場合です(例えば、finish()stopService()stopSelf())。一般的に、システムはこれを単独では行いません。

この場合、Application.getInstanceにアクセスできますか?

プロセスが周囲にある場合は、Applicationインスタンスが周囲にあります。

アプリオブジェクトが破棄されたときは?

プロセスが終わったときに消える。

+0

「その組み合わせは存在しません」について私は実際に質問しました:あなたはコメントできますか? https://stackoverflow.com/questions/44835752/is-app-process-always-killed-when-all-android-components-are-destroyed/44835758#44835758 –

+0

@SemyonTikhonenko:私はその質問に答えた人です。その質問では、プロセスが終了したかどうかを尋ねました。答えがすぐに終了しないということです。 *この*質問では、 "システム"がそれ自身でコンポーネントを "殺す"ことを意味しますが、それは起こりません。 – CommonsWare

+0

ああ。はい。では、これはどうですか?私は理解していません https://stackoverflow.com/questions/37792657/will-all-threads-be-killed-when-a-service-stopped バックグラウンドスレッドは、すべてのコンポーネントが殺されたどのように可能ですか?手伝ってくれますか? –

関連する問題