Повторяющиеся данные при использовании PendingIntent - PullRequest
0 голосов
/ 25 июня 2019

Я слушаю DetectedActivity, FusedLocation, GoogleFit и т. Д. Обновления, используя pending intent. Я прохожу через

PendingIntent.FLAG_UPDATE_CURRENT when calling: pendingIntent = PendingIntent.getService(this, 12, intentService, PendingIntent.FLAG_UPDATE_CURRENT); 

Однако я все еще получаю дубликаты данных.

Я пытался использовать разные идентификаторы запросов для каждого прослушивания определенных обновлений (разные идентификаторы запросов для прослушивания обновлений FusedLocation, разные идентификаторы запросов для прослушивания обновлений GoogleFit и т. Д.), Но они все равно дают мне дубликаты данных. Я также попытался добавить различные actionIds к intentService

Внутри моей Службы у меня есть следующий код:

intentService = new Intent(this, SensorsIntentService.class); //in onCreate
pendingIntent = PendingIntent.getService(this, 12, intentService, PendingIntent.FLAG_UPDATE_CURRENT);

Я ожидаю только один набор данных каждый раз и без дубликатов. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 июня 2019

Итак, отвечая на мой собственный вопрос, очевидно, моя проблема была не в флаге ожидающего намерения, а в 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 никогда не пойман. У кого-нибудь есть идея, почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...