gpt4 book ai didi

java - 从异步线程访问Android Activity 堆栈?

转载 作者:行者123 更新时间:2023-12-01 16:01:22 24 4
gpt4 key购买 nike

StackOverflow 上有大量与 Activity 堆栈相关的问题,但我并没有真正看到任何问题可以回答我的问题。我正在开发一款在线游戏(目前)有 3 种不同的 Activity :

  1. 登录/注册
  2. 菜单(登录后可见,包括“新游戏”、“我的统计数据”和其他一些内容......我现在只是担心“新游戏”选项。)
  3. 游戏

套接字连接发生在登录/注册 Activity 中,该 Activity 创建在后台运行的自定义服务。由于数据可以到达任何点,因此我使用的套接字类具有异步响应处理程序。这意味着每次收到消息时我都无法访问当前上下文。

我需要一种方法来确定收到各种消息类型时当前的上下文是什么,以便我可以相应地处理消息。例如,如果用户到达游戏屏幕(上面#3)并收到一种消息,则它应该简单地告诉游戏屏幕使用新的游戏状态进行更新。但是,用户可能位于同一游戏屏幕并收到不同类型的消息,即“关闭屏幕 #3 和 #2 并注销用户,将其返回到屏幕 #1”。

基本上,我试图找出获取当前 Activity/上下文的最佳方法,确定它是否是当前消息的正确上下文,以及如何处理它。

最佳答案

您可以使用有序广播。让服务发出广播。让每项 Activity 注册广播,采用您认为合适的优先级方案。让获取广播的 Activity 调用 abortBroadcast() 以便停止广播。这样,您的服务就可以“盲目”发送事件。

在这种情况下,您甚至可能不需要订购它。我认为由 Activity 注册的 BroadcastReceiver 仅当该 Activity 位于前台(未暂停)时才会接收广播。

我还写了一些关于该模式的文章 in a blog post ,但情况略有不同(处理 Activity 中的事件或引发通知)。

关于java - 从异步线程访问Android Activity 堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com