私はこの件についていくつかの投稿を見ましたが、どれも満足できる回答はありません。Androidワーカースレッドはどれくらい持続するのですか?
onCreate()
メソッドでメイン(唯一)Activity
のワーカースレッドを開始するものとします。その後finish()
に電話をかけてActivity
を終了させます。
その時点で、それに属するタスクは破棄されます(これにはもうActivity
が存在しないため)。しかし、アプリケーション(およびそれを実行しているプロセス)は、空の "スケルトン"形式で存在し続けることがあるので、必要に応じて素早く再起動できます(ただし、システムによって殺される可能性は非常に高くなります)。
上記が正しいと仮定すると、ワーカースレッドはいつkillされますか?システムが積極的にプロセスを破壊するときにだけ殺されるのだろうか?
私の場合、ワーカースレッドはBluetooth接続のリスナーとして存在します。受け取ったら、それは再び希望のActivity
を起動します。この状況では、実行中のコンポーネント(Activity
、Service
、ContentProvider
またはBroadcastReceiver
)はありません。何かが私のワーカースレッドを殺していることを除いて、これはうまくいくはずです。
背景を使用してこれを(そして痛みを少なくして)行うことができることを知っています。Service
しかし、なぜこれが機能していないのか不思議です。
おかげで、 バリー
私は、Linuxプロセスが破壊されたときにのみスレッドが自動的に殺されると信じています。 – Enzokie
_(http://stackoverflow.com/questions/34463069/can-android [システムアプリのプロセスを終了] _これが唯一の意味することができます「私のワーカースレッドを殺している、これはその何かを除いて、動作するべきであると私には思えます」 -kill-my-app-while-the-of-the-loop-executionである)を使用します。 _ "システムが積極的にプロセスを破壊するときだけ殺されるのですか?"正しいか( 'run()'メソッドが返るかどうか)。 – Onik
合意。問題は、プロセスがいつ殺されるのかとなります。私の推測では、実行中のコンポーネントがなくなってもそれは殺されますが、どこに明示的に記述されているのかわかりません。下のOlegのBroadcastReceiverレスポンスへの私の返答でもっと詳しく。 –