gpt4 book ai didi

android - ForegroundService 取消通知不起作用

转载 作者:行者123 更新时间:2023-11-29 17:49:15 26 4
gpt4 key购买 nike

我有一个前台服务,由绑定(bind) Activity 启动。当Activity forast创建服务时,如果用户发起服务,它会通过调用下面的代码将其置于前台

public void makeForgroundService() {
notificationBuilder = new NotificationCompat.Builder(this);
PendingIntent pendingIntent = PendingIntent.getActivity(this,
sessionId, new Intent(this, MainActivity.class), 0);
notificationBuilder.setContentTitle("My Test Service ")
.setContentText("Service now Running")
.setSmallIcon(R.drawable.newicon)
.setContentIntent(pendingIntent);
// notificationManager = (NotificationManager)
// getSystemService(Context.NOTIFICATION_SERVICE);
notify_id = sessionId;
Log.e(TAG,"making foreGrounf : sessionId = "+String.valueOf(notify_id));
startForeground(notify_id, notificationBuilder.build());
isForeground = true;
}

现在,当 Activity 再次启动时,它会绑定(bind)到服务(因为服务已经在运行并且处于前台状态)。现在我想取消通知,在 getService 调用上尝试过,但没有用!

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// Log.e(TAG, "Inside onServiceConnected");
myService = ((MyService.MyBinder) service).getService();
if(myService.isForeground){

Log.e(TAG,"From Activity,removing notification : "+myService.notify_id);

NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel(myService.notify_id);

}
}

注意事项

我不想 stopForground MyService。只需隐藏或取消通知即可。

更新:

如果 stopForground 是唯一的方法,stopForground 是否会让服务在 Activity 处于前台期间被杀死?我可以在 Activity 的 onDestroy 处设置 StartForground 吗?这是一种(正确)的方式吗?

最佳答案

您可以向您的服务发送消息(在 extras 中传递一些参数)以停止前台状态。

然后在您的服务中,您唯一需要调用的是 stopForeground(true) 通知将被删除。

关于android - ForegroundService 取消通知不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com