我在我的应用程序中使用 Job Scheduler API 在特定时间间隔后为我安排作业。应用程序运行时它运行良好。但是,每当用户关闭应用程序或将其从最近的任务列表中清除时,应用程序就会停止,并且计划的作业之后永远不会执行,直到您打开应用程序并从打开的时间再次重新安排它。
现在,即使应用程序已关闭或从最近的任务列表中清除,我也希望有人帮助我保持工作的执行。
如果有任何替代解决方案,请告诉我。
我正在寻找过去 3 天的解决方案。尝试了 StackOverFlow 和其他网站上开发人员所说的所有内容,但没有一个对我有用。
这是安排工作的地方!
ComponentName componentName = new
ComponentName(getActivity().getBaseContext(),WallpaperJobService.class);
JobInfo jobInfo = new JobInfo.Builder(777,componentName)
.setRequiresCharging(sharedPreferences.getBoolean("Charging",false))
.setRequiredNetworkType(sharedPreferences.getBoolean("Wifi",false) ?
JobInfo.NETWORK_TYPE_UNMETERED : JobInfo.NETWORK_TYPE_ANY)
.setPeriodic(sharedPreferences.getInt("Duration",15) * 60 *
1000)
.setPersisted(true)
.build();
JobScheduler scheduler = (JobScheduler)
getContext().getSystemService(Context.JOB_SCHEDULER_SERVICE);
scheduler.schedule(jobInfo);
我的工作服务类:
public class WallpaperJobService extends JobService {
private boolean jobCancelled;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
@Override
public boolean onStartJob(JobParameters params) {
Log.i("WallpaperJobService", "Job started!");
changeWallpaper(params);
return true;
}
private void changeWallpaper(final JobParameters params) {
final ArrayList<Image> images = (ArrayList<Image>)
MainActivity.favoritesRoomDatabase.roomDao().getAllFavoriteWallpapers();
sharedPreferences = getSharedPreferences("GridSize", MODE_PRIVATE);
editor = sharedPreferences.edit();
if (images != null && images.size() != 0) {
if (sharedPreferences.getInt("Index", 0) == images.size()) {
editor.putInt("Index", 0);
editor.commit();
}
白衣非少年
相关分类