2016-07-27 14 views
1

Ich versuche, eine wiederkehrende asynchrone Aufgabe zu erstellen, um einen Webdienst mit JobScheduler und JobService aufzurufen. Aber meine Idee war es, diese Aufgabe einmal am Tag und immer zur selben Stunde auszuführen. Möglicherweise kann der Benutzer sogar die Stunde des Datums aktualisieren, an dem die Aufgabe gestartet wurde.Android JobInfo Builder periodiy täglich

Unterstützt der JobInfo.Builder diese Möglichkeit? Weil ich "setPeriodic" benutzt habe, aber ich denke nicht, dass das möglich ist.

Sollte ich den AlarmManager für diese Funktionalität besser verwenden?

Dies ist der Code, der jetzt den Dienst aufruft:

private void launchCheckShowStatusJob(){ 
     ComponentName serviceComponent = new ComponentName(this, CheckShowsStatusService.class); 
     JobInfo.Builder builder = new JobInfo.Builder(jobId++, serviceComponent); 
     builder.setMinimumLatency(0); 
     builder.setPeriodic(5*1000); //Every 5 minutes, can this be use to set a dayly task? 
     builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); //Require any network 
     builder.setRequiresCharging(false); 

     JobScheduler jobScheduler = (JobScheduler) getApplication().getSystemService(Context.JOB_SCHEDULER_SERVICE); 
     jobScheduler.schedule(builder.build()); 
    } 

Antwort

0

Sie das Gerät Zeit, wenn Ihr Job-Scheduler aufwacht und dann im Inneren des überprüfen OnStartJob die Zeit wie die erste

public override bool OnStartJob (JobParameters args) 
    { if (devicetime == (that unique time)){ ... } } 
erhalten

und dann können Sie tun, was Sie wollen.

Allerdings, Android 7.0 nicht garantieren, dass jobscheduler wird zur richtigen Zeit arbeiten. also wähle deine einzigartige Zeit breiter aus.

Die zweite Option ist Alarm Manager, die auch für Ihren Fall funktioniert. Es gibt eine nützliche Lösung; Using Alarmmanager to start a service at specific time