Android 相同 activity 的多个实例

Android multiple instances of same activity

我正在开发一个聊天应用程序。 我遇到了一个我不确定如何解决的问题。我正在使用 FCM 向每个客户端发送消息。所以我有一个聊天 activity,其中包含从用户 x 到用户 y 的所有消息。

当我收到来自 FCM 的消息时,我必须检查是否:

  1. Activity(用户 x) 不是 运行 -> 开始与该用户的新聊天并传递消息
  2. Activity(用户 x) 在后台 -> 打开聊天并传递消息
  3. Activity(用户 x) 当前在显示中 -> 传递消息

我不确定如何检查与用户 x 的聊天 activity 不是 运行,它是在后台还是当前正在显示。

我需要一种识别 activitys 实例的方法。

听起来您的使用 case/approach 在 AndroidManifest.xml.

中声明 activity 时可以从使用 launchMode 属性中获益

添加 singleTop 或 singleInstance 选项并使用 onNewIntent() 在初始创建后附加新消息。

在我看来,您应该采取不同的做法:只需使用新消息更新您的模型,然后让 UI(演示者)根据用户的操作(状态)决定应显示哪个聊天。因此,基本上通知您的演示者数据已更改并显示与当前对话相关的新数据(消息)。

如果 activity 不在前台,您无论如何都需要创建一个通知,所以这应该不是问题。通知应该触发然后应该显示正确的对话。