使用PendingIntent

时间:2019-06-25 15:46:53

标签: android android-service android-pendingintent google-fit android-fusedlocation

我正在使用DetectedActivityFusedLocationGoogleFitpending 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);

我希望每次都只有一组数据,并且没有重复项。 任何帮助,将不胜感激。

1 个答案:

答案 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不会被捕获。 有人知道为什么吗?