这就是我开始定位服务的方式。
private void initLocationService() {
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if(getPermissions(android.Manifest.permission.ACCESS_FINE_LOCATION,GET_LOCATION_PERMISSION)){
startService(new Intent(HomeActivity.this, LocationUpdateService.class));
}
}
并在LocationUpdateService
中,我将其作为STICKY
服务启动。所以它一直在后台工作。
public class LocationUpdateService extends Service implements
LocationListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
IServiceResponse {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand: ");
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(BACKGROUND_INTERVAL);
mLocationRequest.setFastestInterval(BACKGROUND_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
由于我的应用目前定位Api 25
(Nougat)
,我需要在此特定服务中进行哪些更改才能在Oreo
使用startForegroundService()
时,我仍然无法访问compileSdkVersion 25
方法。
这些是我的gradle
设置。
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 25
}
答案 0 :(得分:2)
API level 25
的startForegroundService()来自API级别26 NOT 。
将compileSdkVersion 25
和buildToolsVersion "25.0.3"
更改为最新版并尝试。
例如,在我的情况下,我在下面使用:
compileSdkVersion 26
buildToolsVersion '27.0.3'