事情是这样的:我有一个 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/