gpt4 book ai didi

android - Oreo 未调用定位服务

转载 作者:行者123 更新时间:2023-11-29 16:41:26 27 4
gpt4 key购买 nike

我用 startService() 命令启动了 LocationService,但是因为我了解到当应用程序处于后台时 Oreo 不会接受此服务,所以我切换到 作业计划,

我在 lollipopJobSchedular 中测试了应用程序,但在 Oreo 中,它不运行 LocationService

我在 LocationService 的 onCreate() 方法中放置了 break point,但它并没有到达那里。

这就是我正在做的。

主 Activity

它执行以下代码,但不响应 LocationUpdateService.class

    public void initLocationJob(){

JobInfo jobInfo;
JobScheduler jobScheduler;

ComponentName componentName= new ComponentName(this, LocationUpdateService.class);
JobInfo.Builder builder= new JobInfo.Builder(11, componentName);

builder.setPeriodic(5000);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
builder.setPersisted(true);

jobInfo= builder.build();
jobScheduler= (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);


jobScheduler.schedule(jobInfo);
}

位置更新服务

public class LocationUpdateService extends JobService implements
LocationListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
IServiceResponse {



@Override
public void onCreate() {
super.onCreate();

if (isGooglePlayServicesAvailable()) {

mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();

mGoogleApiClient.connect();
}
}


@Override
public boolean onStartJob(JobParameters params) {

Log.i(TAG, "onStartCommand: ");
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(BACKGROUND_INTERVAL);
mLocationRequest.setFastestInterval(BACKGROUND_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

this.params= params;

return true;
}


@Override
public boolean onStopJob(JobParameters params) {
Log.d("JobStopped", "JobStopped");
return true;
}

@Override
public void onLocationChanged(Location location) {
//Get current Lat/lng and send it to server
}

最佳答案

此问题与以下代码有关:

JobInfo.Builder builder= new JobInfo.Builder(11, componentName);
builder.setPeriodic(5000);

从 Android N 开始,JobScheduler 以至少 15 分钟的周期工作。 5 秒的频率过于频繁且不合适。

关于android - Oreo 未调用定位服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50599534/

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