1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Kommunikation von Service auf Activity !

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von KianS, 30.09.2010.

  1. KianS, 30.09.2010 #1
    KianS

    KianS Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.09.2010
    Hi zusammen,

    ich öffne mal hier ein neues Thread , da ich probleme habe mit der Kommunikation zwischen "Service" zur "Activity"

    was habe ich :
    Ich habe ein Download einer FTP Datei, die im Hintergrund als Service runtergeladen wird! am ende habe ich eine Zeit X in einer Variabel.
    desweiteren wird geprüft ob die Datei auch vollständig geladen wird indem ich ein einfachen Vergleich der Datengröße mache.


    also ich habe eine Zeit 0s"anfangszeit" 12:22:00 die bis z.B. 20sek geht "endzeit" 12:22:20
    und eine Download Größe die von 0Kb bis 5000Kb geht.

    Diese Werte werden im Service festgelegt.


    Vorhaben:

    Ich möchte dies Grafisch im GUI der Activity anzeigen lassen.


    Dateidownload zeit : X sekunden
    X sekunden , soll nach und nach abgetastet werden und dynamisch angezeigt werden. 1. sec , 2, sec ...... 20 sec.

    Download traffic : X kb of 5000 kb


    Download rate soll angezeigt werden : 0kb, 250 kb, 500 kb ..... 5000 kb .




    Nun meine Frage :

    wie mache ich das, das der Service diese Werte an die Activity weitergibt !
    und wie kann ich es in der activity "dynamisch und automatisch" anzeigen lassen.




    Ich danke jedem der mir hilft.
     
  2. MetBo, 30.09.2010 #2
    MetBo

    MetBo Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    Probiere es mal mit der ProgressBar oder ProgressDialog.

    Diese Elemente kannst du nach deinen Wünschen modifizieren und auch dynamisiern. Zusätzlich wird das ganze in einen Thread ausgelagert, damit auch deine GUI während des Ladens ansprechbar bleibt.

    Auf der Developer.Google Seite findest du einige gute Beispiele. Hier im Forum bestimmt auch.

    Dies ist nur ein Vorschlag.
     
  3. Unicate, 01.10.2010 #3
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Also ich würde das mit einem normalen Callback machen.
    Dazu sind die doch da oder?

    Das hier in deine Service AIDL damit du den Callback in deinem Service registrieren kannst.
    Code:
         void registerCallback(ServiceCallback callback);
         void unregisterCallback();
    
    Dann noch eine AIDL für den Callback erstellen:

    Sowas in der Richtung:
    PHP:
    interface ServiceCallback {
        
        
    void updateProgress(long progress);
    }
    Dann ServiceCallback in deiner Activity implementieren
    und nach dem der Service verbunden ist den callback registrieren. bei disconnect, natürlich wieder "unregistern"

    Die ServiceConnection der Activity sieht dann in etwa so aus:
    PHP:
        private ServiceConnection _connection = new ServiceConnection() {
            
            @
    Override
            
    public void onServiceDisconnected(ComponentName arg0) {
                if(
    null != _service) {
                    try {
                        
    _service.unregisterCallback();
                    } catch (
    RemoteException e) {}
                    
    _service null;                
                    
    Log.d(TAG"Service disconnected!");
                }
            }
            
            @
    Override
            
    public void onServiceConnected(ComponentName arg0IBinder service) {
                if(
    service != null && null == _service) {
                    
    _service ServiceBinder.Stub.asInterface(service);
                    
    Log.d(TAG"Service connected!");
                    try {
                        
    _service.registerCallback(_callback);
                    } catch (
    RemoteException e) {
                        
    Log.w(TAGe);
                    }
                }
            }
        };
    Hab ich jetzt auch nur von meiner App kopiert, funktioniert da aber bestens.

    Wenn ich zu hause bin könnte ich dir mal meinen "VanillaRemoteService+Callback" schicken, da sind nur Service und Callback implementiert
     
    Zuletzt bearbeitet: 01.10.2010
  4. KianS, 04.10.2010 #4
    KianS

    KianS Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.09.2010
    dankeschön
     

Diese Seite empfehlen