2

タイトルの通り、以下の悩みを抱えています。フォアグラウンド サービスを開始したアクティビティが最近のタスク リストから削除されると、フォアグラウンド サービスが強制終了されます。でサービスを開始しています

    @Override
public int onStartCommand(Intent intent, int flags, int startId) {
    startForeground(notificationID, notification);
    return START_STICKY;
}

なぜこれが起こっているのか、ユーザーがアクティビティをスワイプしてもサービスが実行され続けるようにするにはどうすればよいか教えてください。

何らかの理由で public void onTaskRemoved (Intent rootIntent) にアクセスできませんが、とにかくそのメソッドで何をすべきかわかりません...

私はこのようにサービスを開始していますが、バインドされたサービスではありません

serviceIntent = new Intent(this, RecordingService.class);
startService(serviceIntent);

ユースケースの説明がほとんど役に立たない場合、通知バーのリモートビューからサウンドレコーダーを制御しようとしています。アクティビティが破壊されても録音を継続する必要があるため、サービスを再起動することはできません。

ところで、私は android:process=":recordingProcess" によって別のプロセスでサービスを開始しようとしましたが、サービスは引き続き実行されますが、これはあなたが行うべき方法ではないと思われます。

4

2 に答える 2

1

私も同じ問題を抱えていて、onTaskRemoved()機能にアクセスできました。このリンク「プロセスライフサイクル」トピックを確認してください。から戻ろうとする onStartCommand() START_REDELIVER_INTENTと、サービスが再開されます。

于 2013-08-02T17:09:51.237 に答える
0

Android デベロッパー リファレンスから

サービスは、開始することも、接続をバインドすることもできます。このような場合、サービスが開始されているか、Context.BIND_AUTO_CREATE フラグを使用してサービスへの接続が 1 つ以上ある限り、システムはサービスを実行し続けます。これらの状況がいずれも成立しない場合、サービスの onDestroy() メソッドが呼び出され、サービスは事実上終了します。

サービス開始の経緯は?

于 2013-08-02T16:55:11.617 に答える