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

Service startet nicht

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Kirodema, 10.11.2010.

  1. Kirodema, 10.11.2010 #1
    Kirodema

    Kirodema Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    0
    Registriert seit:
    24.06.2010
    Phone:
    HTC Desire
    Hi,

    ich mach grad ein Tutorial durch für nen Musikplayer (MusicDroid - Audio Player Part II | Hello Android).

    Da dieses Tutorial schon etwas älter ist, stimmen einige Methodenaufrufe mit den heutigen nichtmehr überein, und ich hab die halt meines Verständnis nach angepasst.

    Meine Service Klasse schaut der aus dem Tutorial ähnlich bis auf die Notifys, aber die sollten ja nix damit zu tun haben? Einzige was dort nicht funktioniert hat, war die getBinder mit @Override zu deklarieren, aber da hab ich es dann einfach weglassen (das @Override).

    In meiner Hauptklasse steht dann in der onCreate-Methode folgendes:
    Meine mConnction:
    Code:
    private ServiceConnection mConnection = new ServiceConnection() {
    		
    	@Override
    	public void onServiceDisconnected(ComponentName arg0) {
    		mpInterface = null;
    	}
    	
    	@Override
    	public void onServiceConnected(ComponentName arg0, IBinder service) {
    		//Toast.makeText(BackEnd.this, "Service is binding", Toast.LENGTH_SHORT).show();
    		mpInterface = IBEInterface.Stub.asInterface((IBinder) service);
    		try {
    			mpInterface.clearPlaylist();
    		} catch (RemoteException e) {}
    			
    		updateSongList(new File(MEDIA_PATH));
    	}
    };
    bindService in onCreate():
    Code:
    this.bindService(new Intent(this, IBEService.class), mConnection, Context.BIND_AUTO_CREATE);
    In meiner Manifest unter <application>
    Code:
    <service class=".IBEService" android:process=":remote" android:name="IBEService"></service>
    Hat vielleicht irgendwer einen Plan, was ich falsch mache?
     
  2. Kirodema, 10.11.2010 #2
    Kirodema

    Kirodema Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    0
    Registriert seit:
    24.06.2010
    Phone:
    HTC Desire
    Nachdem ich mich mal kurz mit Debuggen unter Android beschäftigt habe, bin ich auf logcat gestoßen. Hier ist ein meiner Meinung nach auffälliger Auszug:
    Code:
    E/ActivityThread(21698): Activity com.kirodema.icyBeatsBE.BackEnd has leaked ServiceConnection com.kirodema.icyBeatsBE.BackEnd$1@4625de10 that was originally bound here
    E/ActivityThread(21698): android.app.ServiceConnectionLeaked: Activity com.kirodema.icyBeatsBE.BackEnd has leaked ServiceConnection com.kirodema.icyBeatsBE.BackEnd$1@4625de10 that was originally bound here
    E/ActivityThread(21698): 	at android.app.ActivityThread$PackageInfo$ServiceDispatcher.<init>(ActivityThread.java:1154)
    E/ActivityThread(21698): 	at android.app.ActivityThread$PackageInfo.getServiceDispatcher(ActivityThread.java:1049)
    E/ActivityThread(21698): 	at android.app.ContextImpl.bindService(ContextImpl.java:871)
    E/ActivityThread(21698): 	at android.content.ContextWrapper.bindService(ContextWrapper.java:347)
    E/ActivityThread(21698): 	at com.kirodema.icyBeatsBE.BackEnd.onCreate(BackEnd.java:65)
    E/ActivityThread(21698): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
    E/ActivityThread(21698): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
    E/ActivityThread(21698): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
    E/ActivityThread(21698): 	at android.app.ActivityThread.access$2300(ActivityThread.java:135)
    E/ActivityThread(21698): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
    E/ActivityThread(21698): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    E/ActivityThread(21698): 	at android.os.Looper.loop(Looper.java:144)
    E/ActivityThread(21698): 	at android.app.ActivityThread.main(ActivityThread.java:4937)
    E/ActivityThread(21698): 	at java.lang.reflect.Method.invokeNative(Native Method)
    E/ActivityThread(21698): 	at java.lang.reflect.Method.invoke(Method.java:521)
    E/ActivityThread(21698): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    E/ActivityThread(21698): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    E/ActivityThread(21698): 	at dalvik.system.NativeStart.main(Native Method)
    W/ActivityManager(   96): Unbind failed: could not find connection for android.os.BinderProxy@468ca740
    
    Allerdings bin ich noch nicht ganz so fit in Sachen Androidentwicklung und fang daher nicht viel damit an. Zeile 65 in meinem BackEnd.java ist die oben beschriebene Zeile mit this.bindService(...).
    Habe allerdings noch ein startService hinzugefügt, da in der Android-SDK-API steht, dass man das ausführen muss file:///opt/android-sdk/docs/reference/android/content/Context.html#BIND_AUTO_CREATE.bindService und startService verwenden den selben Intent

    Edit: Diese Logmeldungen kommen nur beim schließen des Programms
     
    Zuletzt bearbeitet: 10.11.2010
  3. Unicate, 11.11.2010 #3
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Dein Schnipselchen Code reicht mir noch nicht um darüber eine Aussage zu treffen.


    startService startet den Service und bindet den meines Wissens auch.Wenn du die app beendest wird der service weiter laufen.

    wenn den den service mit BIND_AUTO_CREATE startest, wird der service beendet, wenn der Service mit keiner activity mehr verbunden ist.
     
  4. Kirodema, 12.11.2010 #4
    Kirodema

    Kirodema Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    0
    Registriert seit:
    24.06.2010
    Phone:
    HTC Desire
    Ok, Ich ich hab die Sourcefiles mal bei pastebin hochgeladen:

    Java | package com.kirodema.icyBeatsB - BackEnd.java - CkaNLJU4 - Pastebin.com Hier ist die List-Activity

    Java | package com.kirodema.icyBeatsB - IBEService.java - x7aWFZZP - Pastebin.com Meine Service-Klasse

    XML | <?xml version="1.0" encoding=" - AndroidManifest.xml - ZbKD8yTC - Pastebin.com Das Manifest

    Die .aidl Datei schaut genauso aus wie die aus dem Tutorial

    Danke vorerst mit dem Tipp mit dem startService(). Da das nur ein Testprojekt ist, für ein größeres Schulprojekt ist, wo dann auch ein Widget dazu soll, ist es sicherlich praktisch, wenn der Service nicht beendet, wenn die Activity beendet wird.
     
  5. Kirodema, 16.11.2010 #5
    Kirodema

    Kirodema Threadstarter Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    0
    Registriert seit:
    24.06.2010
    Phone:
    HTC Desire
    Bitte helft mir. Würde das bis morgen nämlich brauchen.
     

Diese Seite empfehlen