web-dev-qa-db-ja.com

最近のリストから削除されたアプリを検出する方法は?

私は音楽アプリで作業しています。ユーザーが最近のリストからアプリケーションを削除したときにサービスを停止します。最初のアクティビティが破棄されたときではありません(ユーザーがアプリを最小化するまでクリックして戻ったとき、その場合、最初のアクティビティも破壊される)。助けてください。

17
Naresh Gunda

ユーザーが最近のリストからアプリケーションを削除したときにサービスを停止したい。

はい、マニフェストファイルの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が呼び出されます。 (覚えているstopWithTasktrueに設定すると呼び出されません)。

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();
    }
}

お役に立てれば。

40
MysticMagicϡ

私がこの答えを投稿したのは、選択された最良の解決策が私にとってうまくいかなかったからです。

これは更新されたバージョンです:

まず、このサービスクラスを作成します。

 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);
0
danielrosero