【问题标题】:startActivity inside service is not working on all android devices服务内的 startActivity 不适用于所有 android 设备
【发布时间】:2020-03-27 18:34:20
【问题描述】:

我必须从 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);
}

当应用程序处于后台并且我收到通知时,结果是

小米a2:MyActivity已经启动成功。

小米红米note 7: MyActivity 没有启动,甚至没有崩溃。

任何帮助为什么starActivity 在后台服务内的所有设备上都不起作用,我该如何解决这个问题?

【问题讨论】:

  • 由于您尝试执行的操作(从后台启动活动)在 Android 10 上被禁止,也许您应该考虑根本不这样做。

标签: android firebase-cloud-messaging start-activity


【解决方案1】:

因此,您希望用户在应用程序被终止后仍能收到消息 - 您可以尝试使用后台服务,但由于 Android 10 禁止使用 CommonsWare 提到的后台服务,并且版本 8 和 9 都会在一段时间后终止后台服务,当应用程序被杀死时,您不应该依赖onMessageReceived。相反,请查看 Firebase 的 NotificationMessage docs

NotificationMessage 发送给用户并接收,无论设备处于打盹模式还是应用程序已被杀死。这可能是您正在寻找的解决方案 - 让后台服务在 Android 8+ 中运行会很困难,而且在新版本中是不可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多