Seule cette balise ne suffira pas à arrêter le service. Je vous recommande de faire en sorte que l'action d'arrêt déclenche plutôt une classe personnalisée BroadcastReceiver
qui exécute la méthode stopService()
à l'intérieur de sa méthode onReceive()
. Faites-moi savoir si vous avez besoin d'aide pour mettre en place quelque chose comme ça de manière plus détaillée.
Réponse modifiée:
Modifiez votre Intent
et PendingIntent
pour l'action de masquage de cette manière :
Intent intentHide = new Intent(this, StopServiceReceiver.class);
PendingIntent hide = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(), intentHide, PendingIntent.FLAG_CANCEL_CURRENT);
Ensuite, créez le StopServiceReceiver
de cette manière, où ServiceYouWantStopped.class
est le service à arrêter:
public class StopServiceReceiver extends BroadcastReceiver {
public static final int REQUEST_CODE = 333;
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, ServiceYouWantStopped.class);
context.stopService(service);
}
}
Assurez-vous que le BroadcastReceiver
que vous venez de créer est déclaré dans votre fichier manifeste :
J'espère que cela vous aidera!