Java 是否需要注销fusedLocationProviderClient的locationcallback?
我正在尝试使用服务获取用户在后台的位置。我正在使用FusedLocationProviderClient来完成这项任务,我正在我的服务类中完成这一切 我为用户提供了两个名为“是”和“否”的按钮。当用户按“是”时,我启动服务;如果用户按“否”,我停止服务 当用户按“是”按钮,然后按“否”时,实际问题就会出现。让我一步一步地提供完整的场景Java 是否需要注销fusedLocationProviderClient的locationcallback?,java,android,fusedlocationproviderapi,Java,Android,Fusedlocationproviderapi,我正在尝试使用服务获取用户在后台的位置。我正在使用FusedLocationProviderClient来完成这项任务,我正在我的服务类中完成这一切 我为用户提供了两个名为“是”和“否”的按钮。当用户按“是”时,我启动服务;如果用户按“否”,我停止服务 当用户按“是”按钮,然后按“否”时,实际问题就会出现。让我一步一步地提供完整的场景 用户按下“是”按钮,我启动服务,并使用FusedLocationProviderClient请求位置更新 现在用户按下“否”按钮,所以我调用stopservice
@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()之外调用它。
它是取消注册回调还是删除先前检索到的LocationSupdate?它将删除给定位置结果侦听器的所有位置更新。您好,它正在工作,但我面临一个问题。即使我设置了locationRequest.setInterval(1000)
,我的locationcallback也会每10秒向我发送一次位置更新。你能告诉我为什么会这样吗@ישו אוהב אותך