2013-05-04 3 views
0

У меня проблема с привязкой службы: Я использую следующий код:Android конкретизации службы bindService (через в)

protected void onCreate(){ 
    ... 
    button.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       if(mService != null) 
           Log.e(TAG, "is instantiated (onClick)!"); 
      }); 
} 

protected void onStart(){ 
    super.onStart(); 
    bindService(new Intent(this, HostService.class), connection, Context.BIND_AUTO_CREATE); 
    if(mService == null) 
     Log.e(TAG, "is null (onStart)!"); 
} 
... 

После начала своей деятельности «является нулевой (OnStart)!» печатается в LogCat. Когда я нажимаю кнопку «создается экземпляр (onClick)!» печатается. Почему bindService() не создает экземпляр my-service mService напрямую и как я могу решить проблемы, связанные с этим?

ТНХ & рассматривает

ответ

0

Почему bindService() оленья кожа экземпляр моей службы-экземпляра mService непосредственно

Это не предполагается. bindService() является асинхронным, как и многие операции в Android.

Как я могу решить проблемы, связанные с этим?

Поместите свой бизнес-логику в onServiceConnected() вашего ServiceConnection, вместо того, чтобы сразу после bindService() вызова.

+0

ОК, который работает, но я должен сделать некоторые вещи в onServiceConnected(). Поэтому я отправляю сообщение обработчику, реализованному в моей деятельности (обработка сообщения теперь должна выполняться в потоке Ui), но я получаю следующее исключение: nullpointerexception в textview.checkforrelayout Это немного запутывает ..? – user2224350

+0

@ user2224350: «но я должен выполнить некоторые действия в onServiceConnected()» - 'onServiceConnected()' вызывается в основном потоке приложения. «Это немного смущает ...?» - вы можете начать другой вопрос StackOverflow, где вы публикуете свой код, трассировку стека и как они совпадают (то есть, какие строки кода относятся к трассировке стека). – CommonsWare

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