Reputation: 5764
Similar to this post I got a service that does some work in the background. When the service starts, I'm displaying a notification. Usually you can assing an intent to the notification that is triggered when the user clicks onto the notification. Mostly an activity is then started.
But how can I use a notification to inform the background service that the user want's to cancel its operation?
Upvotes: 0
Views: 461
Reputation: 12933
You can have a BroadcastReceiver to stop the Service, which is triggered through the PendingIntent of the Notification.
Have a look at the PendingIntent.getBroadcast(...) and use it instead of the PendingIntent.getActivity()
method. You can use it like this:
Intent broadcastIntent = new Intent(context, YourBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, broadcastIntent, 0);
Notification noti = new Notification.Builder(this)
...
.setContent(pendingIntent);
.build();
notification.setContent(pendingIntent);
The BroadcastReceiver could be an inner class in your Service to simply call stopService()
in the onReceive()
method.
Upvotes: 1