Liebe Community!
Ich bräuchte bitte einen Experten der mir zur folgender Frage Auskunft geben kann:
Vielleicht kennt wer von euch das offizielle Google Sample JobScheduler: https://github.com/googlesamples/android-JobScheduler
In diesem Beispiel wird ein Handler inklusive Messenger verwendet.
In der Klasse MyJobService.java wird danach folgender Code verwendet:
@Override
public boolean onStartJob(final JobParameters params) {
// The work that this service "does" is simply wait for a certain duration and finish
// the job (on another thread).
sendMessage(MSG_COLOR_START, params.getJobId());
long duration = params.getExtras().getLong(WORK_DURATION_KEY);
// Uses a handler to delay the execution of jobFinished().
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
sendMessage(MSG_COLOR_STOP, params.getJobId());
jobFinished(params, false);
}
}, duration);
Log.i(TAG, "on start job: " + params.getJobId());
// Return true as there's more work to be done with this job.
return true;
}
Alles anzeigen
Meine Frage bezieht sich auf den folgenden Ausschnitt:
// Uses a handler to delay the execution of jobFinished().
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
sendMessage(MSG_COLOR_STOP, params.getJobId());
jobFinished(params, false);
}
}, duration);
Meiner Meinung findet ja hierbei das Runnable auf dem MainThread statt. Würde man hier z.B. eine Netzwerk Operation durchführen, würde eine NetworkOnMainThreadException bekommen.
Kann mir bitte von euch jemand verraten, wie ihr hier in diesem Sample einen BackgroundThread für eine Netzwerkoperation durchführen könnte und eine Message nach Ende des Background Threads an die Acitvity in diesem Sample schicken kann?
Ich hoffe mein Anliegen an euch Experten ist soweit klar und ich freue mich auf eure Unterstützung!
Liebe Grüße
cop