1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. J4y, 17.08.2011 #1
    J4y

    J4y Threadstarter Neuer Benutzer

    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?
     
  2. J4y, 17.08.2011 #2
    J4y

    J4y Threadstarter Neuer Benutzer

    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.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung Freitag um 23:01 Uhr
[OFFEN] Service wird bei manchen Geräten nicht gestartet Android App Entwicklung 09.04.2017
Wie binde ich Openstreetmap Karten ein ? Android App Entwicklung 19.02.2017
Google Play Services Fehler Android App Entwicklung 19.12.2016
Bluetooth Low Energy - Cache?? Android App Entwicklung 05.09.2016
Location abfrage in einem Service Android App Entwicklung 13.07.2016
Du betrachtest das Thema "Service binden - onBind() wird nicht aufgerufen" im Forum "Android App Entwicklung",