2013-02-18 3 views
3

Я подал Can't get service object (onServiceConnected never called), onServiceConnected not getting called , getting a null pointer exception и onServiceConnected never called after bindService method и не нашел ответа.OnServiceConnected не получивший вызов

вот мой код

@Override 
    public void onStart() { 
     super.onStart(); 
     Context context = getApplicationContext(); 
     Intent intent = new Intent(context, PodService.class); 
     context.bindService(intent, mPodServiceConn, Context.BIND_AUTO_CREATE); 

    } 




    private ServiceConnection mPodServiceConn = new ServiceConnection() { 
       @Override 
       public void onServiceConnected(ComponentName className, IBinder service) { 
        Log.e(TAG, "Pod: Service Connected"); 
        mPodService = IPodService.Stub.asInterface(service); //here i am getting NullPointerException 
       } 
     } 

и мой класс обслуживания не содержит ничего, только это много, я показал, что ржали

public class PodService extends Service { 
@Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     Log.d("bound", "bound"); 
     return null; 
    } 

static class PodSeviceStub extends IPodService.Stub { 

//here i implemented unimplemented methods 

    } 
} 

Но в Lolcat я получаю только «bound» сообщение от onBind(), но не печать «Pod: Service Connected» означает, что сервис успешно запущен. и в lolcat я получаю NullPointerException, а также упоминается в файле манифеста тоже.

ответ

1

Я переписал класс обслуживания, так что onBind() возвращает IBinder как follwos.

public class PodService extends Service { 
@Override 
    public IBinder onBind(Intent intent) { 

     Log.d("bound", "bound"); 
     return mBinder; // returns IBinder object 
    } 

    private final IBinder mBinder = new PodSeviceStub(this); 

static class PodSeviceStub extends IPodService.Stub { 

     WeakReference<PodService> mService; 

     public PodSeviceStub(PodService service) {// added a constructor for Stub here 
      mService = new WeakReference<PodService>(service); 
     } 
//here i implemented unimplemented methods 

    } 
} 

и теперь это работает.

+0

, пожалуйста, объясните свое решение !! – r4jiv007

+0

Я переписал класс обслуживания, так что onBind() возвращает IBinder –

Смежные вопросы