gpt4 book ai didi

java - MapBox:在前台服务中初始化 LocationEngineCallback

转载 作者:行者123 更新时间:2023-12-01 16:54:06 24 4
gpt4 key购买 nike

这个想法是,我希望在请求新的位置更新时每 10 秒跟踪一次用户的位置。为此,我有一个前台服务,

public class LocationService extends Service{
...
}

我在其中初始化请求选项,但我还需要初始化回调。文档中说必须定义一个私有(private)类,以避免内存泄漏。但是,我无法使用它,因为它需要一个 Activity 而不是服务类作为以下代码中的参数:

private final WeakReference<LocationChangeListeningActivity> activityWeakReference;

LocationChangeListeningActivityLocationCallback(LocationChangeListeningActivity activity) {
this.activityWeakReference = new WeakReference<>(activity);
}

我的问题是,在这种情况下我们如何提供回调?

最佳答案

我解决了它(不确定这是否是最有效的方法,但如果我找到另一种方法,该帖子将被更新)。该类,扩展了 Service类只需要实现 LocationEngineCallback<LocationEngineRequest>像这样:

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

之后,我们只需设置位置请求并将最后一个位置检索到当前实例(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;
}

关于java - MapBox:在前台服务中初始化 LocationEngineCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61624599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com