Beiträge von TrickShinobi

    Hallo!




    Ich hätte da eine Frage an Leute, die sich mit Services in Android auskennen.






    Ich arbeite an einer App, die einen Service verwendet und direkt damit
    interagiert (also Methoden des Services über IPC verwendet).




    Der Service wird so geholt.




    Ein existierender Service wird also geholt und an den Context gebunden.


    Ich weiß allerdings nicht genau wann ich stopService(intent) und
    unbindService(intent) oder ob ich es überhaupt verwenden sollte. Im
    Moment mache ich einen unbindService Aufruf aber keinen stopService. Das
    heißt der Service läuft weiter (was auch beabsichtigt ist). Wenn die
    App aber abstürzt passieren komische Dinge mit dem Service. Kann ich
    irgendwie einen Absturz im Service abfangen?


    Ich habe auch schon die Dokumentation dazu angesehen und verstehe, dass mit startService nur der Service gestartet wird und mit bindService an den Kontext gebunden. Allerdings verstehe ich da eine Sache noch nicht. Wenn ich nirgendswo startService Aufrufe und den Service nur in der AndroidManifest Datei definiere, startet der Service dann von alleine? Denn laut Dokumentation kann man bindService auch ohne die Methode startService aufrufen. Das heißt irgendwie muss ja der Service gestartet werden.

    Okay! Soweit verstanden.


    Ich hätte da noch ne Frage zum Service. Ich habe jetzt einen Service, der über Wlan/Bluetooth Nachrichten empfängt. (Und dann die Callbackmethoden anspricht). Allerdings wird die Service initial einmal erstellt und auch, wenn die App im Hintergrund läuft, habe ich den Service nicht entbunden (unbindService(..) nicht aufgerufen), damit er eben auch im OnPause Zustand im Prinzip weiterhin Nachrichten empfangen kann und dementsprechend reagieren kann. Allerdings habe ich jetzt ein Problem, dass der Service "unkontrolliert" im Hintergrund mitläuft und wenn ich die App ausmache, ist er auch noch an. Wie kann ich das Problem lösen?

    Du kannst 'den UI Thread' nicht 'manipulieren'.
    Der Sinn von Threading ist, dass der eine Thread vom anderen Thread unabhängig ist. Er muss nicht einmal wissen, dass da ein anderer Thread existiert.
    Logisches Resultat: der eine Thread weiß überhaupt nicht, ob da ein anderer Thread existiert. Noch weniger kann er da irgend etwas manipulieren.

    Ich habe mich vielleicht falsch ausgedrückt. Ich meinte wie stoße ich die UI an, wenn im Service irgendeine Aufgabe beendet wurde.


    Wie Du mit der UI interagieren kannst hängt in erster Linie davon ab, welche Art von Service Du implementierst.
    Wird der Service an die UI gebunden (beispielsweise bei einem Chat, einer Datenübertragung, einem Spiel, einer Fernsteuerung…), dann hat Dein Service gewisse Informationen über die UI und Du kannst die Mittel und Wege zur Interaktion bereit stellen.

    Ok. Was für Mittel genau stehen mir denn zur Verfügung, um Interaktion bereit zu stellen? Hier bin ich gerade und weiß nicht genau, wie ich das handhaben soll. Im Moment starte ich im Service einfach eine neue Activity, wenn eine "Nachricht" angekommen ist im Service.


    Läuft Dein Service hingegen ohne UI (Indoor-Navigation mit iBeacon oder WLAN, Profilwechsel via NFC, Loggen von WiFi/Bluetooth Qualität zur späteren Analyse), dann wird Dein Service unabhängig des UI gestartet und nach Beendigung seiner Arbeit gestoppt. Hier hat er absolut keine Informationen über irgendwelche UI-Elemente die irgendwas von ihm wollen und Du musst probate Mittel zur Kommunikation anbieten.

    Was meinst du mit probaten Mitteln?


    Danke für die Hilfe

    Hallo!
    Ich bin gerade dabei eine App zu entwickeln, die per Bluetooth bzw. Wifi Daten austauscht. Für den Datenaustausch benutze ich eine Bibliothek, die ich vorhatte in einem Service laufen zu lassen. Falls also die Verbindung abbricht, wird im Service als Erstes angestoßen und von dort aus der UI Thread angestoßen. (Hat jemand eine gute Seite für UI Thread im Service manipulieren?)


    Jedenfalls wollte ich nur wissen, ob das ein guter Ansatz ist oder ich es grundlegend anders machen soll.


    Danke!! ^^ ^^