首页 > 解决方案 > 当应用程序在 android 版本 7、8、9、10 中被杀死时,作业调度程序无法在后台工作?

问题描述

我已经使用计时器在作业调度程序中以 15 分钟的间隔调用一个方法。但是作业调度程序仅在应用程序运行阶段运行,如果我终止应用程序,则作业调度程序不起作用。杀死我的应用程序后如何运行作业调度程序工作?

这是我的代码片段

MainActivity.java

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startJob();
}

private void startJob(){
    JobScheduler jobScheduler = (JobScheduler)getApplicationContext()
            .getSystemService(JOB_SCHEDULER_SERVICE);

    ComponentName componentName = new ComponentName(this,
            RecallMyServicesis.class);

    JobInfo jobInfo = new JobInfo.Builder(1, componentName)
            .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
            .setRequiresCharging(true)
            .setOverrideDeadline(15*60*1000)
            .setPersisted(true)
            .build();
    int result = jobScheduler.schedule(jobInfo);
    if(result == JobScheduler.RESULT_SUCCESS)
    {
        Log.d("MainActivity","Success");
    }else
    {
        Log.d("MainActivity","Failed");
    }
}
}

RecallMyServicesis.java

public class RecallMyServicesis extends JobService {

private static final String TAG = "RecallMyServicesis";

@Override
public boolean onStartJob(JobParameters jobParameters) {
    System.out.println("Job Fired");
    for(int i = 0; i < 10; i++){
        System.out.println("Job Fired i : "+i);
        Toast.makeText(this, "Job Fired i : "+i, Toast.LENGTH_SHORT).show();
        SystemClock.sleep(1000);
    }
    jobFinished(jobParameters, false );
    return true;
}

@Override
public boolean onStopJob(JobParameters jobParameters) {
    return false;
}
}

AndroidManifest.xml

 ​&lt;service android:name=".RecallMyServicesis"
              android:permission="android.permission.BIND_JOB_SERVICE" />

标签: androidandroid-serviceandroid-9.0-pieandroid-jobschedulerandroid-10.0

解决方案


I am trying to work on JobScheduler and eventually, It is not working on Android 7.0. I have Samsung s7 device. But when I am deploying apk in Moto e4 which have android 7.1 version, the jobscheduler is working fine on background and app as well, even I kill the app, it is running.


推荐阅读