Thread mit Handler --> Looper?

  • Hallo,


    ich habe einen Thread in einem Service, welche Unabhängig laufen soll, da er doch einige aufwendigere Arbeiten durchführt.
    Damit mein Konstrukt der Handler das ganze ohne weiteres mitmacht habe ich jetzt noch am Anfang der Run Methode und am Ende folgendes ausgeführt:

    Java
    Looper.prepare();


    Java
    Looper.loop();


    Damit funktioniert jetzt alles, allerdings beendet sich der Thread nicht, wenn alles fertig ist. Er weiß ja auch wahrscheinlich nicht, wann das der Fall ist, wie geht ihr da vor?


    Ein

    Java
    Looper.getMainLooper().quitSafely();


    hilft leider nicht.


    Okay, ich habe noch einmal ein etwas über den Looper gelesen und verstehe jetzt, wie Sinnfrei es ist, nach Looper.loop(); die quit-Methode auszuführen.
    Ich probiere noch ein paar Dinge aus.


    EDIT:
    Ich dachte ich könnte den Looper einfach in der letzten Aufgabe im letzten Schritt beenden, indem ich ihn an das Objekt übergebe und zum Schluss dann

    Java
    loop.quit()

    ausführen. Allerdings beschwert sich Android dann, dass ich den MainThread nicht quiten darf..?

  • Wozu benötigst Du da einen Handler? Musst Du in Deinem Service irgendwie mit dem UI interargieren?
    Wäre ein AsyncTask für Deine Zwecke nicht völlig ausreichend?

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ich brauche deswegen einen Handler, weil schon alleine die Bluetooth Klassen in einen eigenen Thread die Daten empfängt und die dann per Handler alle x Datenstränge weitergibt. Das habe ich direkt so von Google übernommen (also dem offizielen Beispiel).


    Etwas anderes:
    Kann es sein, dass der AlarmManager immer nur eine Instants vom Service starten kann? Manchmal wird der Service nämlich nicht zu dem Zeitpunkt gestartet, zu dem er sollte und ich vermute, dass der Service durch den Thread nicht beendet wird und dann erst nach einer gewissen Zeit gestoppt wird. Dann holt der AlarmManager den Start nach. Kann das sein?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!