0

Я создаю уведомления о пригодности для носки по ряду причин. Поскольку я показываю тот же самый на мобильном устройстве, мне нужно синхронизировать удаление уведомлений. Я заметил, что между удалением уведомления на носимом и мобильном телефоне требуется много времени. Сначала я подумал, что это связано с DataAPI, который я использую, но я ошибался. Умывка удаления вызвана с большой задержкой, и я не знаю, почему.Огромная задержка извещения об удаленииИнтерантное исполнение на носимые (~ 5 секунд)

Здесь проверьте мой выход (очищенный) LogCat:

-- Wearable -- 
09:31:45.007 D/FitnessWatchface﹕ onVisibilityChanged : false 
09:31:48.008 D/FitnessWatchface﹕ onVisibilityChanged : true 
09:31:52.929 D/NotificationHelper﹕ Got action my.package.name.NOTIFICATION_DISCARDED 
09:31:52.963 D/DataAPI﹕ Discard message send out to mobile 
09:31:53.052 I/art﹕ WaitForGcToComplete blocked for 10.697ms for cause DisableMovingGc 
09:31:53.071 D/DataAPI﹕ Wrote successful wear://1d8...5d7/notification/discard/2 
09:31:53.073 D/DataLayerListener﹕ onDataChanged invoked 

-- Smartphone -- 
09:31:53.075 D/DataLayerListener﹕ onMessageReceived: /notification/discard/2 
09:31:53.075 D/DataLayerListener﹕ Forwarding DISCARD event to receiver... 
09:31:53.075 D/Broadcast﹕ Got DISCARD for type 
09:31:53.075 D/NotificationHelper﹕ removeNotification() 
09:31:53.165 D/DataLayerListener﹕ onDataChanged: wear://1d8...5d7/notification/discard/2 
09:31:53.165 D/DataLayerListener﹕ Forwarding DISCARD event to receiver... 
09:31:53.165 D/Broadcast﹕ Got DISCARD for type 
09:31:53.165 D/NotificationHelper﹕ removeNotification() 

Как вы можете видеть циферблат становится видимым, и это занимает около 5 секунд, пока выход следующей LogCat не записывается.

Вот код, где я создаю ожидающее намерение для удаления:

Intent intent = new Intent(context, NotificationHelper.class); 
intent.setAction(NOTIFICATION_DISCARDED); 
intent.putExtra(NOTIFICATION_INPUT_TYPE, type); 
// prevents that the intent is overridden by the system with similar ones 
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); 
return PendingIntent.getBroadcast(context, 6434, intent, PendingIntent.FLAG_ONE_SHOT); 

Вы видите то, что объясняет задержку? Если вы хотите увидеть еще один код, оставьте комментарий.

Я только что собрал перед отправкой этого вопроса тайминги, составленные, например, WhatsApp. Задержка тоже есть, но, похоже, она немного быстрее (но я ее не измерял).

ответ

0

После отклонения уведомления в ношении Android пользователь имеет 5 секунд, чтобы отменить действие. Если вы отклонили уведомление об увольнении, он должен отобразить кнопку отмены.