Service startet nicht

Kirodema

Kirodema

Neues Mitglied
0
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?
 
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:
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.
 
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.
 
Bitte helft mir. Würde das bis morgen nämlich brauchen.
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
955
swa00
swa00
H
Antworten
2
Aufrufe
819
HelloWorldx8
H
O
Antworten
15
Aufrufe
2.970
ORHUX
O
Zurück
Oben Unten