gpt4 book ai didi

android - 如何正确使用 JobService?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:17 29 4
gpt4 key购买 nike

我在 Android 中实现了一个应用程序,它使用 JobService 检查更新。我已经在一些设备上对其进行了测试:Samsung J3、RedMi 5+、RedMi note pro、MI A2 lite。它在 J3 中正常工作,但在我测试过的其他手机中,如果应用程序未处于 Activity 状态或应用程序不在最近的应用程序列表中,则不会安排 JobService。

这是我的实现方式。

MainActivity.java

public static void scheduleJob(Context context) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
JobScheduler js =
(JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo job = new JobInfo.Builder(
MY_BACKGROUND_JOB,
new ComponentName(context, CheckAdService.class))
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPersisted(true)
.setPeriodic(15 * 60 * 1000)
.build();
int resultCode = js.schedule(job);
if (resultCode == JobScheduler.RESULT_SUCCESS) {
Log.d("JOB", "Scheduled");
} else {
Log.d("JOB", "Not Scheduled");
}
}
}

Service.java

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public class CheckAdService extends JobService {

@Override
public boolean onStartJob(JobParameters params) {
Log.d("NetworkAvailable", "Flag No 2");
doBackgroundWork(params);
return true;
}

private void doBackgroundWork(final JobParameters params) {
final Context context = getApplicationContext();
...

IonDB ionDB = new IonDB(CheckAdService.this, "checkStatus");
ionDB.getData(new OnDbData() {
@Override
public void OnDbDataReceived(JsonObject jsonObject, boolean withError) {
...
// after notifying user with news I call jobFinished with rescheduling true option
jobFinished(params, true);

}
});
}

@Override
public boolean onStopJob(JobParameters params) {
Log.d("DBDATA", "Job cancelled before completion");
return true;
}
}

请更正我的 JobService 实现,使其适用于所有 android versions >= LOLLIPOP

考虑到我是 Android 的新手,如果我犯了一些编码错误,请告诉我任何建议。

最佳答案

我猜你是否会使用 worker Manager它会更正确。
它具有不同 Android 版本之间的能力。

关于android - 如何正确使用 JobService?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55429969/

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