【发布时间】:2020-05-05 23:09:25
【问题描述】:
我的想法是,在请求新的位置更新时,我希望每 10 秒跟踪一次用户的位置。为此,我有一个前台服务,
public class LocationService extends Service{
...
}
我在哪里初始化请求选项,但我还需要初始化回调。在文档中说必须定义一个私有类,以避免内存泄漏。但是,我不能使用它,因为它需要一个活动而不是服务类作为以下代码中的参数:
private final WeakReference<LocationChangeListeningActivity> activityWeakReference;
LocationChangeListeningActivityLocationCallback(LocationChangeListeningActivity activity) {
this.activityWeakReference = new WeakReference<>(activity);
}
我的问题是,在这种情况下我们如何提供回调?
【问题讨论】:
-
我试过
public class LocationService extends Service implements LocationEngineCallback然后只是覆盖这些方法。最后同样设置来自引擎的请求locationEngine.requestLocationUpdates(request, this, getMainLooper());但我不确定,是否是解决方案? -
你为什么不直接使用 Android 提供的 LocationProvider 呢?您似乎没有在 Mapbox 地图上显示它。 Android LocationProvider 在前台服务中完美运行:developer.android.com/reference/android/location/…(如果您不指定不同的 LocationProvider,Mapbox 还将在后台使用 Android LocationProvider)
-
当用户打开他的屏幕时,我将它显示在 Mapbox 地图上。 Mapbox 的 FusedLocationProvider 更紧凑,在手机性能方面表现更好,并且可以节省样板代码。
标签: java mapbox mapbox-android