2

我需要在整个应用程序中实现一个 LocationListener。

我知道我可以将服务与 LocationListener 一起使用,但问题是我必须在位置更改时使用一些通知程序。当我能够随时获得最后一个位置时,这还不够,因为当它发生变化时,我需要立即在所有活动中的当前位置。

所以在伪代码中我需要这样的东西:

myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {

public void onLocationChanged(Location location) {
                notifyAllActivities(location);
            }
};

在每个活动中:

void onNotify(Location location) { //... }

4

2 回答 2

3

您是否尝试过使用CommonsWare 的 LocationPoller 库

众所周知,它非常强大,我个人在我的一个基于位置的应用程序中使用了它。

它的好处之一是它与 using 的兼容性Service;即使应用程序在后台,这也是您获取位置更新所需要的。它获取WakeLock唤醒电话,获取位置,然后优雅地释放它。

于 2012-08-04T20:18:51.903 回答
2

使服务调用 sendBroadcast() 以广播 Intent。将经度/纬度作为附加信息添加到该 Intent 中。在需要位置的每个活动中,为意图注册一个广播接收器,并从接收器的 onReceive() 中的意图的附加内容中获取 lng/lat

于 2012-08-04T20:10:47.783 回答