私はユーザーのログイン画面を持っています。ユーザーはログインボタンを押してIntentServiceを作成し、残りのサービスに接続して認証結果を返します。インテントサービスを使用する必要がありますか?
ここで達成したい機能は次のとおりです。アクティビティが一時停止(つまりバックグラウンド)している場合、インテントサービスはまだ実行されていなければなりません。しかし、私がタスクマネージャを使用してアプリケーションを終了させると、インテントサービスは停止するはずですが、現在はそうしていません。完了するまでonHandleIntent
を実行し続けます。手動でstopSelf()
を呼び出すと、onDestroy()
が呼び出されますが、onHandleIntent
メソッドは引き続き実行されます。 onHandleIntent
を強制的に停止させるにはどうすればよいですか? "return"を呼び出すことは、1つのrestメソッド呼び出しに巻き込まれる可能性があるため、オプションではありません。
この機能やサービス(asynctaskなど)にインテントサービスを使用する必要がありますか?あなたのサービスは、あなたのアプリがフォアグラウンドで実行されている間、あなたがサービスを必要としないで行わたいものをやっている場合
IntentServiceを呼び出すアクティビティが破棄された場合にのみIntentServiceを停止します。 IntentServiceは、それを作成したアクティビティが一時停止している場合(現在実行中)、引き続き実行する必要があります。アクティビティが破棄されたときにサービスのstopSelf()を呼び出すと、サービスのonDestroyメソッドが呼び出されますが、onHandleIntentは引き続き実行され、停止することはありません。 – MobileMon
アクティビティが破棄された場合にタスクを停止したい場合は、サービスを使用しません。私はあなたのonHandleIntentメソッドでコードを実行するスレッドを使用します。スレッドを手動で削除することもできますし、あなたのアクティビティのonDestroyコールに設定されている条件をリッスンすることもできます。通常、私はonCreateでtrueに設定したisLiveという静的なブール値を持ち、onDestroyではfalseを返します。通常はこの目的のために機能します。 – ubzack
甘いおかげで、まさに私が探していた答えです! – MobileMon