java - 在 Android TabHost 应用程序中完成交互通信的最佳方式

标签 java android ipc

事情是这样的:我有一个 Android 应用程序需要每 X 秒(目前为 60 秒)调用一次 Web 服务。该应用程序有多个选项卡,这些选项卡都需要与数据本身进行交互。一个是 MapView,一个是 ListView,第三个是无关紧要的,但最终也需要获取一些全局数据。问题是我希望我的主要 Activity 有一个在后台运行的线程,获取结果,然后指示 TabHost 中的两个子 Activity 使用最新数据更新自己。此外,当用户单击选项卡并且触发 onCreate/onResume Activity 时,我还想通过从主要 Activity 获取最新数据来强制重绘。我真的很茫然。我已经尝试使用服务和一些贫民窟静态方法将 Activity 的实例传递给服务以调用特定函数以在计时器触发时更新它们的 View ,但是速度变慢非常糟糕并且代码只是丑陋丑陋.有什么建议吗?

编辑:所以我在 tabhost Activity 中将其实现为计时器驱动的线程,然后我在每个子 Activity 中都有计时器驱动的线程,然后抓取数据(以同步方式)并更新它们的 map /列表。它要快得多,但仍然感觉有点 hack-ish,尤其是我在父 Activity 中调用自定义函数的部分,如下所示:

((MainActivity)getParent()).getNearbyMatches();

这增加了一个我并不完全满意的强耦合元素,但从性能的角度来看,它比以前好得多。我很欣赏已经给出的答案,并且会在内容提供商方面做一些研究,但我不确定我是否想回到服务模型。

最佳答案

所以我找到了我认为的答案:The Application Class .您可以扩展此类以跟踪全局应用程序状态。

AndroidManifest.xml 文件中,您可以在 android:name 属性中引用完全限定的自定义类,它会在应用程序启动时实例化。

然后任何 Activity 都可以调用 “getApplication()”,它会返回您的自定义 Application 类的实例,然后您可以根据需要对其进行定制。

关于java - 在 Android TabHost 应用程序中完成交互通信的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162659/

相关文章:

sockets - Linux : Unix domain datagram sockets don't follow specification of connect/recv,吗?

c - linux中三个进程共享内存同步

java - 如何修复 'classNotFoundException'?

Java VisualVM CPU 使用率和处理器亲和性

java - 我为 sparql 执行编写的代码是否正确?

android - 取消刷新后,带有 CollapsibleToobarLayout 的 SwipeRefreshLayout 不向下滚动

android - 异步删除 ListView/RecyclerView 项的最佳实践

java - 无法在 MediaPlayer 中播放带有特殊字符的 URL

c - 帮助:wrong behavior code:client-server IPC signal handling on POSIX Message Queue UNIX C programming

java - 使用 tomcat 部署期间避免临时 404 错误