NullPointerException при вызове сервиса в onResume - PullRequest
0 голосов
/ 24 апреля 2011

Я пытаюсь позвонить в службу и, основываясь на ответе, перенаправить пользователя к другой активности (логин).

Если я подожду, пока произойдет, скажем, нажатие кнопки, то все будет работать нормально (поскольку служба привязана), но если я сделаю это на Resume, то получу следующее исключение:

ERROR/AndroidRuntime(2226): FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to resume activity {...MyActivity}: 
        java.lang.NullPointerException

и мой код:

FooService fooService;

@Override
protected void onStart() {
    super.onStart();

    Intent intent = new Intent(this, FooService.class);
    bindService(intent, fooServiceConnection, Context.BIND_AUTO_CREATE);
}

@Override
protected void onResume() {
   //I would assume the service would have bound by now?
   super.onResume();
   doSomething();
}

1 Ответ

6 голосов
/ 24 апреля 2011

Что заставляет вас думать, что fooService существует в точке onResume()?

Вызов bindService() является асинхронным. Это произойдет, когда это произойдет. Вы не можете doSomething(), пока не будет вызван onServiceConnected(), а onServiceConnected(), возможно, не был вызван к тому времени, когда вызывается onResume().

И, если get() на fooService выполняет сетевой ввод / вывод, вам нужно переписать приложение, чтобы переместить его из основного потока приложения в фоновый поток.

...