无法从服务启动 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。
在问这个问题之前。我首先要看看其他人是否也遇到了这个问题。但是我没有找到。 简短的: 我想在通过 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。