2016-06-22 5 views
0

私は複数のクライアント接続を処理するAndroid Bound Serviceを持っています。私が正しく理解していれば、クライアントが接続していなければAndroidはサービスを殺します。Android Boundサービスの延期の延期

しかし、私のサービスでは、クライアントの接続が解除されてから1分後までは別のスレッドが実行されている可能性があります。私の懸念は、私のサービスが破壊される前にこのスレッドに参加すると、破壊が遅れ、新しいサービスの作成を妨げ、新しいクライアント接続を削除することになります。これは本当ですか?バインドされたサービスの破棄を延期する方法はありますか?

基本的に、私がカバーしたい場合は、(サービスに偽のバインドされたカウントを追加するときにワーカースレッドが起動し、スレッドの終了時に減算と同様。):

  1. サービスが長時間実行されていますタスクを別のスレッドで実行します。
  2. クライアント接続の数がゼロに達しました。
  3. 子スレッドがまだ実行中であるため、サービスはまだ終了していません。

    3-1。子スレッドが終了し、サービスが終了します。

    または

    3-2。子スレッドが実行されている間、新しいクライアントがバインドされます。したがって、サービスは継続して実行されます。

+0

IntentServiceは可能な代替品ですか? [IntentService](https://developer.android.com/reference/android/app/IntentService.html) – usajnf

答えて

1

これはstartService()で開始された正確にどのようService作品です。 一般的に、サービスにバインドする前にその呼び出しでサービスを開始します。

stopSelf()またはContext.stopService()は、すぐに、またはすべての境界が無制限になるとすぐにサービスを停止します。