私のAndroidアプリでは、呼び出しによってアクティビティ内からIntentServiceを開始します
startService(new Intent(this, MyService.class));
そしてそれは魅力のように働きます。アクティビティ間を移動し、ホームボタンを押して他のアプリに切り替えることができます。それでも機能します。しかし、最近の画面からアプリを削除すると、サービスが停止します。どうすればこれを回避できますか?つまり、アプリが最近のアプリから閉じられている場合でも、サービスを継続して実行するにはどうすればよいですか?
私のサービスコードは次のとおりです。
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
@Override
protected void onHandleIntent(Intent intent) {
//Here I run a loop which takes some time to finish
}
}
IntentService は常に実行されているわけではありませんが、Intentベースで動作します。あなたは送信し、Intentを使用して実行する(何らかのジョブを実行する)コマンドを言ってみましょう。サービスはそのジョブを実行し、その後他のIntentを待機してから停止します。
目標を達成するには、IntentServiceの代わりに通常の Service を使用する必要があります。サービスはSTART_STICKY
として構成する必要があります。
サービスクラス@Override
onStartCommand メソッド
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
サービス自体を強制終了するには、 stopSelf() を使用できます