Je travaille sur une application qui exécute la tâche d'arrière-plan après 10 secondes et vérifie si le périphérique est inactif ou non, mais comment il se déclenche toutes les 10 secondes sans vérifier que le périphérique est inactif ou ne pas.Job Scheduling setRequiresDeviceIdle (true) et setPeriodic() ne fonctionnent pas
MainActivity.java
private static final int JOB_ID = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mJobScheduler = (JobScheduler) getSystemService(this.JOB_SCHEDULER_SERVICE);
construct_job();
}
private void construct_job(){
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(getPackageName(), MyJobService.class.getName()))
.setPeriodic(10000).setRequiresDeviceIdle(true);
int code = mJobScheduler.schedule(builder.build());
if(code <= 0) {
//If something goes wrong
Log.v("SOMETHING", "GOES WRONG");
}
}
MyJobService.java
public class MyJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
Log.v("OnStart", "onStartJob-h");
//Job Will Be Started Here
mJobHandler.sendMessage(Message.obtain(mJobHandler, 1, params));
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.v("JOB","STOPPED");
mJobHandler.removeMessages(1);
return false;
}
private Handler mJobHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
Toast.makeText(getApplicationContext(),
"JobService task running", Toast.LENGTH_SHORT)
.show();
jobFinished((JobParameters) msg.obj, false);
return true;
}
});
}
AndroidManifiest.xml
<service
android:name=".MyJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"/>
Do, Quelqu'un a idée de ce que je fais mal? S'il vous plaît aider? Ajouter .setRequirementsEnforced (true) corrigera probablement votre problème.