如何将数据从后台线程传递到当前显示的活动?

时间:2011-09-05 22:58:27

标签: android android-activity gps locationlistener

我有两个活动,A和B.活动A实现一个LocationListener,定期打印屏幕上的原始GPS坐标。活动B只是一个带有MapView的MapActivity。我希望能够将周期性生成的坐标从A传递到B,即使A在背景中暂停而B在前景中也是如此。事实证明,当活动A暂停时,LocationListener确实继续检索坐标。在B处于焦点的情况下,我如何从A传递这些值? startActivity(intent)是否适用于已经启动且位于前台的活动?

2 个答案:

答案 0 :(得分:1)

如果您需要不断轮询位置更新,请考虑制作“粘性”服务(但不像androidika)。查看Remote Messenger Service示例。这将允许活动从服务“听到”位置的更新。

在我的应用程序中,我创建了一个“听到”位置更新并且连接丢失的基类。然后,ui活动继承自此基类。因此,我可以让两个不同的活动接收更新,但最小化重复的代码。

答案 1 :(得分:0)

我建议使用在后台运行的服务。 或者,不是让一个活动决定何时更新位置,而是编写一个IntentService,您可以在需要时从两个活动中的任何一个启动它。 看看PlacesUpdateService这不仅仅是寻找gps coordiantes,但它会给你一个想法。