Я пытаюсь узнать текущее местоположение GPS, когда приложение находится в фоновом режиме или даже когда оно убито. по этой причине я создал класс службы под названием MyBackgroundLocationService.class
public class MyBackgroundLocationService extends Service {
private static final String TAG = MyBackgroundLocationService.class.getSimpleName();
private FusedLocationProviderClient mLocationClient;
LocationCallback mLocationCallBack;
public MyBackgroundLocationService() {
}
@Override
public void onCreate() {
super.onCreate();
mLocationClient = LocationServices.getFusedLocationProviderClient(getApplicationContext());
mLocationCallBack = new LocationCallback(){
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult == null){
Log.d(TAG, "onLocationResult: is null");
return;
}
Log.d(TAG, "onLocationResult: "+locationResult.getLocations().get(0).getLatitude() + "/" + locationResult.getLocations().get(0).getLongitude());
}
};
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand: ");
getLocationUpdates();
return START_STICKY;
}
private void getLocationUpdates() {
final LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(1800);
locationRequest.setFastestInterval(16);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
stopSelf();
}
}
mLocationClient.requestLocationUpdates(locationRequest, mLocationCallBack, Looper.myLooper());
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroyCommand: ");
// mLocationClient.removeLocationUpdates(mLocationCallBack);
}
}
И я назвал службу из моего основного класса следующим образом:
Intent intent = new Intent(MapsActivity.this,MyBackgroundLocationService.class);
startService(intent);
так я объявляю службу в файл манифеста:
<service
android:name=".MyBackgroundLocationService"
android:enabled="true"
android:exported="false"
/>
Так что проблема в том, где я закрываю приложение, LocationCallBack останавливается, что мне делать?