2016-06-13 5 views
3

私のサービスのonStartCommand()メソッドでは、長時間実行されるスレッドを開始します。サービスが停止すると、すべてのスレッドが強制終了されますか?

サービスはMainActivityonCreate()で開始されています。

私のアプリケーションが終了すると(メインアクティビティがユーザによって閉じられた時間)、私はサービスを停止します。しかし、私は以前に言及したスレッドが殺されたことを保証したい、またはその前後にスレッドを停止しなければならない。

サービスが停止すると、サービスで開始されたすべてのスレッドは自動的に終了しますか?

+2

いいえ、彼らは殺されません。あなたが手動でそれを殺すには、いくつかのチェックポイントを持っている必要があります。非同期タスクを参照してください。 –

+1

あなた自身で見つけ出す、長時間実行しているスレッドの中にLog.d()を実行してください! –

+2

スレッドはコンポーネントに依存しません。コンポーネントとは、アクティビティ、サービス、コンテンツプロバイダ、放送受信機のことです。独立系では、onCreate、onDestroyなどのライフサイクルコールバックメソッドに応答していないということです。 –

答えて

0

私は、サービスのonDestroy()にスレッドの状態を記録してこれをチェックしました。私のサービスが止まった後、スレッドは生きています。

+0

http://stackoverflow.com/questions/10961714/how-to-properly-stop-the-thread-in-java –

+0

ありがとうございます。しかし、私のスレッドはWebサーバー(Jetty)を実行します。私はサーバの 'stop()'メソッドを呼び出すだけで止めることができました。 @GennadiiSaprykin – brk

関連する問題