【问题标题】:MapBox: Initializing the LocationEngineCallback in a foreground serviceMapBox:在前台服务中初始化 LocationEngineCallback
【发布时间】: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


【解决方案1】:

我解决了(不确定这是否是最有效的方法,但如果我找到另一个方法,帖子会更新)。扩展Service 类的类只需要像这样实现LocationEngineCallback&lt;LocationEngineRequest&gt;

public class LocationService extends Service implements LocationEngineCallback<LocationEngineResult>{
...
}

之后,我们只需设置请求位置并将lastLocation检索到当前实例(this):

locationEngine.requestLocationUpdates(request, this, getMainLooper());
locationEngine.getLastLocation(this);   

并在被覆盖的方法中声明内部逻辑:

@Override
public void onSuccess(LocationEngineResult result) {
    //Handle Success
}

@Override
public void onFailure(@NonNull Exception exception) {
    //Handle Failure
}

当然,别忘了停止更新,停止服务后去掉LocationEngine

@Override
public void onDestroy() {
    super.onDestroy();
    locationEngine.removeLocationUpdates(this);
    locationEngine = null;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2014-09-18
    • 2021-10-26
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多