【问题标题】:How do I pass data from a background thread to the currently displayed activity?如何将数据从后台线程传递到当前显示的活动?
【发布时间】:2011-09-06 22:55:08
【问题描述】:
我有两个活动,A 和 B。活动 A 实现了一个 LocationListener,它定期打印出原始 GPS 坐标在屏幕上。 Activity B 只是一个带有 MapView 的 MapActivity。我希望能够将周期性生成的坐标从 A 传递到 B,即使 A 在后台暂停而 B 在前台暂停。事实证明,当活动 A 暂停时,LocationListener 确实会继续检索坐标。那么,以 B 为焦点,我如何将这些值从 A 传递过来? startActivity(intent) 是否适用于已经开始并处于前台的活动?
【问题讨论】:
标签:
android
android-activity
gps
locationlistener
【解决方案1】:
如果您需要不断轮询位置更新,请考虑制作“粘性”服务(但不像 androidika)。查看远程信使Service 示例。这将允许 Activity “听到”来自服务的位置更新。
在我的应用程序中,我创建了一个“听到”位置更新以及连接是否丢失的基类。然后,从这个基类继承的ui活动。因此,我可以让两个不同的活动接收更新,但尽量减少重复代码。
【解决方案2】:
我建议使用在后台运行的服务。
或者,与其让一个活动决定何时更新位置,不如编写一个 IntentService,您可以在需要时从两个活动中的任何一个启动它。
看看PlacesUpdateService 这不仅仅是寻找gps coordiantes,它会给你一个想法。