在onResume中调用服务时出现NullPointerException

时间:2011-04-24 14:53:46

标签: android service binding

我正在尝试拨打服务,并根据响应将用户重定向到其他活动(登录)。

如果我等到这样做,直到说,按一下按钮,那么它工作正常(因为服务已绑定),但如果我在onResume上执行,那么我得到以下异常:

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 个答案:

答案 0 :(得分:6)

是什么让您认为fooService存在于onResume()

bindService()的调用是异步的。它会在它发生时发生。在调用doSomething()之前,您无法onServiceConnected(),并且在调用onServiceConnected()时可能尚未调用onResume()

并且,如果get()上的fooService正在进行网络I / O,则需要重写您的应用程序以将其移出主应用程序线程并移至后台线程。