Service binden - onBind() wird nicht aufgerufen

J

J4y

Neues Mitglied
2
Hallo,

ich habe einen kleinen Service geschrieben, den ich über eine Activity aufrufen möchte.

Code in der Activity:
Code:
        Intent intent = new Intent(this, ConnectionService.class);
        mConnection = createServiceConnection();
        
        if(!mBound){
            Log.i(LoginActivity.class.getName(), "Binde Service");
            bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
        }
        Log.i(LoginActivity.class.getName(), "mService is " + mService);
Methode createServiceConnection()
Code:
        ServiceConnection mConnection =
                new ServiceConnection(){

            public void onServiceConnected(ComponentName className, IBinder service) {
                Log.i(LoginActivity.class.getName(), "Service connected");
                LocalBinder<ConnectionService> binder = (LocalBinder<ConnectionService>) service;
                mService = binder.getService();
                mBound = true;
            }

            public void onServiceDisconnected(ComponentName className) {
                Log.i(LoginActivity.class.getName(), "Service disconnected");
                mBound = false;
                
            }
            
        };
        return mConnection;
der LocalBinder ist eine kleine Hilfsklasse, mit dem ich das Bind Objekt realisiere - angelehnt an den Tipp von
http://www.ozdroid.com/#!BLOG/2010/12/19/How_to_make_a_local_Service_and_bind_to_it_in_Android

Im ConnectionService habe ich dann diese Methode
Code:
public IBinder onBind(Intent arg0) {
        Log.i(ConnectionService.class.getName(), "Erzeuge Binder");
        return new LocalBinder<ConnectionService>(this);
    }
Anhand der Log-Ausgaben lässt sich erkennen, dass bindService() aufgerufen wird, onBind() aber nicht.
In der Manifest-Datei ist der Service hinterlegt.
Target ist Android 1.5
Woran kann das liegen?
 
Ok das Thema hat sich geklärt :-D

Das Problem war, dass ich davon ausgegangen bin, dass die Methode bindService erst beendet ist, wenn der Service korrekt angebunden ist. Daher führe ich im späteren Codeabschnitt direkt eine Anweisung auf den Server aus.
Da das aber nicht der Fall ist, wird hier eine NullPointerException geworfen.
Ich erzeuge nun den Service direkt in der onCreate() Methode und nicht erst im späteren Verlauf. Damit ist dann sichergestellt, dass der Service später schon existiert.
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
10
Aufrufe
229
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
961
swa00
swa00
H
Antworten
2
Aufrufe
819
HelloWorldx8
H
Zurück
Oben Unten