无法从服务启动 activity

fail to start activity from service

在问这个问题之前。我首先要看看其他人是否也遇到了这个问题。但是我没有找到。 简短的: 我想在通过 FCM 收到消息时启动 activity。 在 onMessageReceived(@NonNull RemoteMessage remoteMessage) 每当使用此代码处理传入消息时

Intent intent = new Intent(getApplicationContext(), IncomingMeetingConference.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);

如果应用前景,它工作正常。但是当我在后台制作应用程序时。 Activity 未启动。

到目前为止,我在控制台中观察到

I/Timeline: Timeline: Activity_launch_request time:771108234

但没有关于Activity线程相关的消息。

而当应用程序处于前台时,我在控制台中收到 Activity线程日志消息。请让我知道如何解决这个问题?

你不能那样做。不鼓励这种行为。当您从服务器收到消息时,您不得打扰用户。正确的行为是显示 Notification。然后用户可以点击 Notification 来查看 Activity。这允许用户决定何时以及是否要查看它。

感谢 David 给我正确的想法。所以我通过

找到了检查应用程序的代码是如何在后台或前台运行的
public boolean foregrounded() {
    ActivityManager.RunningAppProcessInfo appProcessInfo = new ActivityManager.RunningAppProcessInfo();
    ActivityManager.getMyMemoryState(appProcessInfo);
    return (appProcessInfo.importance == IMPORTANCE_FOREGROUND || appProcessInfo.importance == IMPORTANCE_VISIBLE)
}

如果应用程序在前台,它将 return 为真。如果应用程序在后台,它将 return false。