私は音楽アプリで作業しています。ユーザーが最近のリストからアプリケーションを削除したときにサービスを停止します。最初のアクティビティが破棄されたときではありません(ユーザーがアプリを最小化するまでクリックして戻ったとき、その場合、最初のアクティビティも破壊される)。助けてください。
ユーザーが最近のリストからアプリケーションを削除したときにサービスを停止したい。
はい、マニフェストファイルのServiceのstopWithTask
としてtrue
フラグを使用して行うことができます。
例:
<service
Android:enabled="true"
Android:name=".MyService"
Android:exported="false"
Android:stopWithTask="true" />
[〜#〜]または[〜#〜]
最近のリストから削除されるアプリケーションのイベントが必要で、サービスを停止する前に何かを行う場合は、これを使用できます。
<service
Android:enabled="true"
Android:name=".MyService"
Android:exported="false"
Android:stopWithTask="false" />
したがって、サービスのメソッドonTaskRemoved
が呼び出されます。 (覚えている、stopWithTask
をtrue
に設定すると呼び出されません)。
public class MyService extends Service {
@Override
public void onStartService() {
//your code
}
@Override
public void onTaskRemoved(Intent rootIntent) {
System.out.println("onTaskRemoved called");
super.onTaskRemoved(rootIntent);
//do something you want
//stop service
this.stopSelf();
}
}
お役に立てれば。
私がこの答えを投稿したのは、選択された最良の解決策が私にとってうまくいかなかったからです。
これは更新されたバージョンです:
まず、このサービスクラスを作成します。
public class ExitService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
System.out.println("onTaskRemoved called");
super.onTaskRemoved(rootIntent);
//do something you want before app closes.
//stop service
this.stopSelf();
}
}
次に、マニフェストラベルでサービスを次のように宣言します。
<service
Android:enabled="true"
Android:name=".ExitService"
Android:exported="false"
Android:stopWithTask="false" />
ここで、アプリを閉じる前に何かしたいところからサービスを開始します。
Intent intent = new Intent(this, ExitService.class);
startService(intent);