我创建了带有自定义通知的Android前台服务。自定义通知包括一个关闭按钮。
当应用程序处于后台状态时,关闭按钮会停止服务,但是如果应用程序处于关闭状态而不是在后台(从最近的应用程序中删除),则不会停止服务。
问题:当应用程序不在后台(最近的应用程序)时,通知中的关闭按钮不会停止服务
预期结果:即使应用程序不在后台,关闭按钮也应能够停止该服务。 (类似于android mediaplayer应用程序。即使mediaplayer应用程序不在后台,我们也可以通过滑动通知来停止该服务。注意:我的应用程序不是Media Player应用程序)
它是通过实现远程视图而构建的,并且已将其设置为待处理的意图。
Intent closeIntent = new Intent().setAction(ACTION);
closeIntent.putExtra("action", "close");
PendingIntent pendingCloseIntent = PendingIntent.getBroadcast(this, 1, closeIntent, 0);
待定意图已设置为远程视图中的关闭按钮
remoteViews.setOnClickPendingIntent(R.id.button, pendingCloseIntent);
已创建一个通知接收方类,并扩展了BradcastReciever。
public class NotificationActivityReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
intent.getStringExtra("action");
unRegisterServiceReceiver();
}
}
unRegisterServiceReceiver方法
private void unRegisterServiceReceiver() {
context.unbindService(this);
sampleService.stopService();
if (i != null) {
context.unregisterReceiver(cashbackReciver);
context.unregisterReceiver(notificationActivityReciever);
stopService(i);
}
使用Oncreate()方法启动服务代码
sampleService = new MyService();
this.context = this;
i = new Intent(context, MyService.class);
context.bindService(i, this, Context.BIND_AUTO_CREATE);
context.startService(i);
registerCashbackReceiver();
registerNotificationReceiver();
onDestroy()方法
@Override
protected void onDestroy() {
context.unbindService(this);
context.unregisterReceiver(cashbackReciver);
context.unregisterReceiver(notificationActivityReciever);
super.onDestroy();
}
谢谢。