私はバックグラウンドで実行されるサービスを持っています。システムが低メモリ状態でこのサービスを強制終了しても問題ありませんが、システムによってサービスが再開されることは望ましくありません。サービスはSTART_NOT_STICKYで再開
だから、これを行うためには、私のような私のonStartCommandからSTART_NOT_STICKYフラグを返します。しかし
public int onStartCommand(Intent intent, int flags, int startId) {
// do stuff here
return START_NOT_STICKY;
}
、私は私がログにこれを見るメモリ不足の状況を作成する目的でアプリケーションの束を開きます:
Process com.myapp (pid 3960) has died.
Scheduling restart of crashed service com.myapp/.MyService in 5000ms
Low Memory: No more background processes.
...
Start proc com.myapp for service com.myapp/.MyService: pid=4905 uid=10031 gids={3003, 1015}
私のプロセスは、すべきではないときに再開されます。どうしてこれなの?ドキュメントによると、START_NOT_STICKYはサービスの再起動を許可すべきではありません。サービスの再起動を防ぐ他の方法はありますか?または、私のサービスがいつ再開されたかを伝えることができますか?
おかげ
上記のサービスを開始する保留中のインテントはありませんか?保留中の意図がある場合、またはサービスが処理する意図が発生した場合でも、開始されます。 – NuSkooler
保留中のインテントはありません。しかし、サービスにはいくつかのBroadcastReceiversがあります...それは何にも影響しますか? – Nick
BroadcastReciverが登録されているインテントが(AndroidManifest.xmlなどで)起動されている場合、そのサービスは起動されて処理されます。 – NuSkooler