在Android中杀死我的应用程序后,Job Scheduler无法正常工作?

时间:2018-08-20 07:58:10

标签: android android-service android-jobscheduler

我已经使用计时器在作业调度程序中每隔5秒调用一次方法。但是作业计划程序仅在应用程序运行阶段运行,如果我杀死了该应用程序,则作业计划程序无法正常工作。杀死我的应用程序后,如何运行作业调度程序以使其正常工作?

我的代码是:

package com.deemsysinc.firebaseandroid;

import android.app.job.JobParameters;
import android.app.job.JobService;
import android.os.PersistableBundle;
import android.util.Log;

import java.util.Timer;
import java.util.TimerTask;

public class MyJobService extends JobService {
    private static final String TAG=MyJobService.class.getSimpleName();
    Timer timer;
    TimerTask timerTask;
    @Override
    public boolean onStartJob(JobParameters jobParameters) {
        final PersistableBundle persistableBundle=jobParameters.getExtras();
        timer=new Timer();
        timerTask=new TimerTask() {
            @Override
            public void run() {
                MethodCalling();
                Log.d("TheJobStart",persistableBundle.getString("Title"));
            }
        };
        timer.schedule(timerTask,0,15000);
        jobFinished(jobParameters,false);
        return true;
    }

    @Override
    public boolean onStopJob(JobParameters jobParameters) {
        Log.d("TheJobStart","JobCompleted");
        return true;
    }
}

3 个答案:

答案 0 :(得分:1)

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> 我遇到了同样的问题,但是我发现一个解决方案,只需在清单文件中添加这两行即可。

 

答案 1 :(得分:0)

您尚未提供任何代码。您的工作方式和方式,但是应该使用WorkManager而不是JobScheduler这也是Google推荐的。 即使您的应用被杀死,也会执行在WorkManager中安排的进程。

来自官方文档:

  

通过WorkManager API,可以轻松指定可延迟的异步   任务以及何时运行。这些API可让您创建任务并   将其交给WorkManager立即运行或在适当的时候运行   时间。例如,某个应用可能需要从以下位置下载新资源   网络不时。使用这些类,您可以设置一个   任务,请选择适合其运行的环境(例如“仅在   设备正在充电并在线”),然后将其交给WorkManager运行   当条件满足时。 即使任务仍然可以运行,即使   如果您的应用被强制退出或设备已重启。

     

如果您的应用未运行,WorkManager将选择适当的方式来运行   安排后台任务-取决于设备API级别和   包括依赖项,WorkManager可能使用JobSchedulerFirebase   JobDispatcherAlarmManager。您无需编写设备逻辑   找出设备具有的功能并选择   适当的API;相反,您可以将任务交给   WorkManager并让它选择最佳选项。

您的要求位于Recurring tasks下,请检查here以了解如何使用WorkManager执行重复任务。

答案 2 :(得分:0)

即使您实施WorkManager,您也将无法在已向Redmi之类的用户提供自动启动设置的Custom ROM中运行Background任务。有关更多信息,请检查this