gpt4 book ai didi

java - 我是否需要为 fusedLocationProviderClient 注销 locationcallback?

转载 作者:行者123 更新时间:2023-11-30 00:05:25 29 4
gpt4 key购买 nike

我正在尝试使用服务在后台获取用户的位置。我正在使用 FusedLocationProviderClient 来完成这个任务,我在我的服务类中做所有这些事情。

我向用户提供了两个名为"is"和“否”的按钮。当用户按"is"我开始服务,如果用户按“否”我停止服务。

当用户按下"is"按钮然后按下“否”时,就会出现实际问题。让我逐步提供完整的场景。

  1. 用户按下"is"按钮,因此我开始服务,并且我正在使用 FusedLocationProviderClient 请求位置更新。
  2. 现在用户按下“否​​”按钮,所以我调用 stopservice 方法来停止我的服务。

现在的问题是我的服务停止了,但我仍然收到我不想要的用户的位置更新。

所以,我想知道这怎么可能。是否需要取消注册 locationcallback??

GpsPingService.java

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("JK-->>", "Gpsping Service onstartcommand!");
try {

locationRequest = new LocationRequest()
.setInterval(1000)
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setFastestInterval(1000);

locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
Log.e("JK-->>", "location updated by gpsping service-->> " + locationResult.getLastLocation().getLatitude() +
" " + locationResult.getLastLocation().getLongitude());
Toast.makeText(getApplicationContext(), "Location changed!", Toast.LENGTH_SHORT).show();
}
};


fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getApplicationContext());
fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, Looper.myLooper());


} catch (Exception e) {
Log.e("JK-->>Gpsping-->> ", e.getMessage());
}
return START_STICKY;
}

最佳答案

您需要取消注册回调,这样您就不会每次都得到结果。您可以使用:

fusedLocationProviderClient.removeLocationUpdates(locationCallback);

您需要创建 locationCallback 类作用域,以便您可以在 onStartCommand() 之外调用它

关于java - 我是否需要为 fusedLocationProviderClient 注销 locationcallback?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49115524/

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