我正在使用DetectedActivity
听FusedLocation
,GoogleFit
,pending intent
等更新。我经过
PendingIntent.FLAG_UPDATE_CURRENT when calling: pendingIntent = PendingIntent.getService(this, 12, intentService, PendingIntent.FLAG_UPDATE_CURRENT);
但是,我仍然得到重复的数据。
我每次收听某些更新时都尝试使用不同的请求ID(用于收听FusedLocation更新的请求ID不同,用于收听GoogleFit更新的请求ID不同),但是仍然给我重复的数据。我还尝试将不同的actionId添加到intentService
在我的服务中,我有以下代码:
intentService = new Intent(this, SensorsIntentService.class); //in onCreate
pendingIntent = PendingIntent.getService(this, 12, intentService, PendingIntent.FLAG_UPDATE_CURRENT);
我希望每次都只有一组数据,并且没有重复项。 任何帮助,将不胜感激。
答案 0 :(得分:0)
因此,回答我自己的问题,显然我的问题不是关于挂起的意图标志,而是关于onStartCommand
在我的service
中。显然,它被调用了两次(第二次是因为我通过调用将service
移到foreground
来>
startForeground(id, notification)
(如果我对原因有误,请纠正我),以便侦听器再次注册,因此数据发送了两次。现在,我不再在onStartCommand
中启动此命令,而是在foregroundService
中启动onBind
。
我唯一不知道的是:我必须创建BroadcastReceiver
而不是IntentService
来处理pendingIntent
,在我的Service
实现中现在使用
pendingIntent = PendingIntent.getBroadcast(this, 12, intentService, PendingIntent.FLAG_UPDATE_CURRENT);
代替
pendingIntent = PendingIntent.getService(this, 12, intentService, PendingIntent.FLAG_UPDATE_CURRENT);
否则pendingIntent
不会被捕获。
有人知道为什么吗?