当用户从最近的任务列表中关闭应用程序时,如何保持作业服务运行

我在我的应用程序中使用 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();

        }



HUX布斯
浏览 143回答 1
1回答

白衣非少年

当在后台定期做一些事情时——&nbsp;、、、、JobSchedulerFCM推送消息等——你必须考虑到你的进程可能不在你工作的时候。Android 会为你创建一个进程,但它是“从头开始”的。您的 UI 可能已在内存中设置的任何内容(例如数据库)都将用于某些先前的进程,并且可能不会在新进程中设置。WorkManagerAlarmManager
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java