Anwendungsfall haben BroadcastReceiver
Aktionsereignisse empfangen und müssen sie in sequenzieller Reihenfolge ausführen.Android: Task sequenziell auf einen Thread in JAVA
Hier wie unten Event1 und Event2 können Rücken an Rücken empfangen werden. Event1-Arbeit muss abgeschlossen sein und dann sollte Event2-Arbeit gestartet werden.
Wie wird es sequenziell?
BroadcastReceiver{
onReceive(){
Event1:
Task1 doing Something different.//Cant run network operations here.
Event2:
Task2 doing Something different.//Cant run network operations here.
}
}
executors.newsinglethreadexecutor()
oder handlerthread
ist Option ist ich suche at..any andere gute Möglichkeit, dies zu tun?
Warum nicht in einem 'Thread' stecken? –
Speichern Sie eine Referenz von Aktion2 in Aktion1 und als letzten Befehl in Aktion1 planen Sie Aktion2. Dann läuft alles sequenziell und Sie müssen sich nicht darum kümmern, wie viele Threads es gibt. – Robert
Der einfachste Weg dazu besteht darin, sie zu serialisieren, indem Sie eine Nachricht an einen gemeinsamen Thread senden und die Handler für diesen gemeinsamen Thread ausführen. Das sorgt dafür, dass man vor dem anderen fertig ist. Ein anderer Weg wäre die Verwendung von Semaphoren, um den Zugriff auf die kritischen Abschnitte der beiden Handler zu serialisieren. In jedem Fall müssen Sie sich der Möglichkeit bewusst sein, dass Aktion 2 vor Aktion 1 auftritt und diesen Fall behandelt. –