У меня есть сервер push-уведомлений для доставки сообщений в мое приложение Android, и я хотел бы знать, как лучше всего уведомить сервер, когда сообщение было просмотрено.
В настоящее время я пытаюсь отправить сообщение подтверждения на сервер, как только основное действие моего приложения вызывает его обратный вызов onResume, но поскольку я использую основное действие SingleTop и обрабатываю некоторые намерения с помощью метода onNewIntent, я не могу быть уверен если onResume вызвано намерением или приложением, выходящим на передний план. Я сопоставил поток обратного вызова в трех ситуациях, в которых может быть моя деятельность, когда она получает намерение запустить ее, а именно:
Действие выполняется на переднем плане (вверху стека) (1)
Запуск -> onPause () -> onNewIntent (намерение) -> onResume ()
Действие приостанавливается на переднем плане (например, экран) (2)
Приостановлено -> onRestart () -> onStart () -> onResume () -> onPause () -> onNewIntent (намерение)
Действие приостанавливается в фоновом режиме (например, я участвую в другом действии) (3)
Приостановлено в фоновом режиме -> onNewIntent (намерение) -> onRestart () -> onStart () -> onResume ()
В случае, если я перейду к своей деятельности, не получив намерения:
Действие приостанавливается, и пользователь переходит к нему (4)
Приостановлено -> onRestart () -> onStart () -> onResume ()
В случаях 1, 3 и 4 пользователь заканчивается экраном, на котором он / она действительно может видеть сообщение, поэтому я хочу отправить сообщение с подтверждением.
Если бы был обратный вызов, который вызывается только в том случае, если действие действительно становится видимым на экране, это было бы идеально, но мне трудно его найти.
Кто-нибудь знает, как я могу это решить?