1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. tar, 08.03.2011 #1
    tar

    tar Threadstarter Neuer Benutzer

    Hallo Leute!

    Ich schreibe gerade eine Anwendung, bei der ich eine Kommunikation zwischen Service und Activity benötige. Wenn die Activity den Service anspricht, ist das kein Problem. Ich möchte das jedoch umgekehrt umsetzen. Der Service kommuniziert periodisch mit einem Webserver und falls dabei ein bestimmtes Ereignis eintritt, soll der Service die Activity darueber benachrichtigen.

    Ich hatte jetzt vor, dass der Service einen Broadcast losschickt und die Activity von einem BroadcastReceiver benachrichtigt wird. Allerdings wird anscheinen bei jedem Broadcast eine neue Instanz des BroadcastReceivers gestartet (ist das wirklich so?), so dass der BroadcastReceiver nicht meine Activity ansprechen kann, weil ich sie ihm garnicht kenntlich machen kann.


    Habt ihr eine Idee wie man die Kommunikation Service zu Activity umsetzt?

    ~Tobias
     
  2. Unicate, 09.03.2011 #2
    Unicate

    Unicate Android-Experte

    Also eigentlich sollte nicht bei jedem Broadcast eine neue Instanz des Receivers erstellt werden. Wenn du das so gecoded hast, ist das ungünstig um nicht falsch zu sagen.

    Ich habe meine Service's immer per Callback mit den Activities kommunizieren lassen, das ging auch immer ganz gut.
     
  3. tar, 09.03.2011 #3
    tar

    tar Threadstarter Neuer Benutzer

    Danke fuer deine Antwort, auch wenn sie... hm... mich verwirrt.

    Mit welchem Callback ist das denn möglich oder hast du da vielleicht sogar ein Beispiel?


    ~Tobias
     
  4. Unicate, 09.03.2011 #4
    Unicate

    Unicate Android-Experte

    Im Moment hab ich mein Vorzeigebeispiel nicht hier. Den Callback musst du natürlich erst erstellen...

    Ich werde mal ein Tutorial dazu schreiben... nicht heute, aber demnächst.

    Man muss der AIDL Datei welche man für die Richtung Activity=>Service erstellt hat um 2 Methoden erweitern

    PHP:
    interface ServiceBinder {

        
    void registerCallback(ServiceCallback callback);
        
    void unregisterCallback();
        
    ....
    }
    und eine weitere AIDL für diesen ServiceCallback schreiben.

    Beim binden der Activity an den Service dann darauf achten, das man diese Methode aufruft und das implementierte Interface des Callbacks dann registriert (mit registerCallback aus deiner ServiceBinder.aidl)

    Dann kann man dieses interface im Service selbst verwenden und einfach aufrufen.

    Ich hoffe das war verständlich genug.
     
  5. tar, 09.03.2011 #5
    tar

    tar Threadstarter Neuer Benutzer

    Ok, ich hab AIDL mal kurz ueberflogen und ich glaube auch, dass es damit geht.

    Bin dann jedoch auf etwas anderes gestoßen, was meine urspruengliche Idee zum Laufen bringt. Und zwar war ja mein eigentliches Problem, dass bei jedem Broadcast eine neue Instanz des BroadcastReceivers gestartet wird. Dies ist aber nur so, falls man den Receiver ueber die Manifest-Datei registriert. Falls man das programmatisch ueber registerReceiver() macht, ist der Receiver fest an eine Activity gebunden.

    ~Tobias
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Bitmap von Activity an Activity übergben Android App Entwicklung 03.09.2017
[OFFEN] Activity als Dialog - RecyclerView funktioniert nicht mehr Android App Entwicklung 14.08.2017
[ERLEDIGT] Probleme mit Service unter Android N Android App Entwicklung 16.07.2017
[ERLEDIGT] Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung 23.06.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[GELÖST] Nach AS Update Fehler Error running app: Default Activity not found Android App Entwicklung 16.05.2017
[GELÖST] Übergabe an zweite Activity Android App Entwicklung 11.05.2017
[OFFEN] Service wird bei manchen Geräten nicht gestartet Android App Entwicklung 09.04.2017
[ERLEDIGT] Problem beim Starten einer neuen Activity Android App Entwicklung 21.03.2017
Benachrichtigung/Erinnerung an den Benutzer Android App Entwicklung 14.02.2017
Du betrachtest das Thema "Service soll Activity benachrichtigen, wie?" im Forum "Android App Entwicklung",