В моей деятельности у меня есть переменные экземпляра LocalBinder mBinder ;ServiceConnection mConnection; and
булевы mBound; `активность связывания службы бросает NullPointerException
В onCreate
я экземпляр ServiceConnection
и установить его mConnection
, как это:
mConnection=new ServiceConnection()
{
public void onServiceConnected(ComponentName class name,IBinder service){
Log.d(TAG,"Service connected");
mBinder=(LocalService.LocalBinder)service;
}
И я установить mBinder к нулю в onServiceDisconnected(ComponentName className)
Проблема заключается в том, что вызов связать услугу с использованием:
никогда не возникает ... поэтому ServiceConnection никогда не вызывается ... и когда я использую открытый метод в классе LocalBinder
, он выдает исключение, поскольку связующее имеет значение NULL.
У меня есть непустое ServiceConnection
объект и я использую правильный context.The активность запускается на приложение start.The LocalBinder
как вы могли догадаться статический внутренний класс LocalService
.
Локальная служба выглядит следующим образом:
static class LocalBinder
{
public int getRandomNumber()
{
return (int)(Math.random()*100);
}
}
public IBinder onBind(Intent intent)
{
LocalBinder binder=new LocalBinder();
return binder;
}
служба запускается, когда я реализую onStartCommand
и startService(intent);
, но он не будет связываться ... Служба связи не будет отображаться, даже если bindService
возвращает истину ... Таким образом, IBinder не передается в Activity, вызывающий NullPointerException
Когда вы пытаетесь получить доступ к mBinder? – pskink
В 'onResume', как' mBinder.getRandomNumber(); 'в цикле for, здесь возникает исключение в LogCat – vamsiampolu
попробуйте вернуть значение log.d bindService() – pskink