Сервис startActivity inside не работает на всех устройствах android - PullRequest
0 голосов
/ 27 марта 2020

Мне нужно запустить действие из FirebaseMessagingService, и я получаю следующий код при получении уведомления

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // some code here...

    Intent intent = new Intent(this, MyActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

Когда приложение работает в фоновом режиме и я получаю уведомление, результат был

Xiaomi mi a2: MyActivity успешно запущена.

Xiaomi redmi note 7: MyActivity не запущено, и ничего не произошло, даже без сбоев.

Любая помощь, почему starActivity не работает на всех устройствах внутри фоновой службы, и как я могу исправить эту проблему?

1 Ответ

0 голосов
/ 27 марта 2020

Таким образом, вы хотите, чтобы пользователь по-прежнему получал сообщения после того, как приложение было убито - вы можете попробовать использовать фоновые службы, но, поскольку Android 10 запрещает фоновые службы, как упомянул CommonsWare, и версии 8 и 9 обе будут убивать фоновые службы после некоторых время, вы не должны полагаться на onMessageReceived, когда приложение убито. Вместо этого посмотрите на NotificationMessage документы Firebase

NotificationMessage, отправленные пользователю и полученные независимо от того, находится ли устройство в режиме Doze или приложение было убито. Вероятно, это то решение, которое вы ищете - поддерживать фоновые службы в Android 8+ будет сложно и невозможно в новых версиях.

...