2017-09-10 2 views
0

ich den Job wie konfiguriert haben folgende:Wie Hintergrund auszuführen Job wiederkehrende Feuerbasis Job Dispatcher mit

@Override 
public boolean onStartJob(JobParameters job) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      uploadDatToFirebase(); 
     } 
    }).start(); 
    return true; 
} 
@Override 
public boolean onStopJob(JobParameters job) { 
    return true; 
} 

Aber Job:

FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this)); 
    Job myJob = dispatcher.newJobBuilder() 
      .setService(InfoJobService.class) 
      .setRecurring(true) 
      .setTrigger(Trigger.executionWindow(0, 10)) 
      .setLifetime(Lifetime.FOREVER) 
      .setTag("data") 
      .setReplaceCurrent(true) 
      .setConstraints(Constraint.ON_ANY_NETWORK) 
      .build(); 
    dispatcher.mustSchedule(myJob); 

In Jobservice Klasse haben onstart und OnStop Verfahren wie folgt i geändert Dispatcher arbeitete nur einmal, es ist nicht wiederkehrend. Meine Frage ist ähnlich wie this question Aber keine Lösung wurde dort gegeben, so musste ich erneut fragen.

+0

jede Lösung Got? –

+0

@tejshah ich habe die Lösung hinzugefügt, die für mich als Antwort unten arbeitete. – hasan

Antwort

0

Ich weiß nicht, ob die Lösungen ideal sind, ist für jeden Fall, aber es hat für mich funktioniert. Jobservice:

@Override 
public boolean onStartJob(final JobParameters job) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      uploadDatToFirebase(job); 
     } 
    }).start(); 

    return true; 
} 



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

private void uploadDatToFirebase(final JobParameters parameters) { 
    try{ 
     doSomething(); 
     Thread.sleep(2000); 
    }catch (InterruptedException e) { 
     e.printStackTrace(); 
    } finally { 
     jobFinished(parameters, true); 
    } 
} 

Und in Aktivität:

FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this)); 

    Job myJob = dispatcher.newJobBuilder() 
      .setService(InfoJobService.class) 
      .setTag("InfoJobService") 
      .setRecurring(true) 
      .setTrigger(Trigger.executionWindow(30, 60)) 
      .setLifetime(Lifetime.FOREVER) 
      .setReplaceCurrent(false) 
      .setConstraints(Constraint.ON_ANY_NETWORK, Constraint.DEVICE_CHARGING) 
      .setRetryStrategy(RetryStrategy.DEFAULT_LINEAR) 
      .build(); 

    dispatcher.mustSchedule(myJob); 
+0

: - Dankeschön, aber es funktioniert nicht in Lenovo Gerät. Können Sie diese Lösung führen? –

Verwandte Themen