我正在尝试拨打服务,并根据响应将用户重定向到其他活动(登录)。
如果我等到这样做,直到说,按一下按钮,那么它工作正常(因为服务已绑定),但如果我在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();
}
答案 0 :(得分:6)
是什么让您认为fooService
存在于onResume()
?
对bindService()
的调用是异步的。它会在它发生时发生。在调用doSomething()
之前,您无法onServiceConnected()
,并且在调用onServiceConnected()
时可能尚未调用onResume()
。
并且,如果get()
上的fooService
正在进行网络I / O,则需要重写您的应用程序以将其移出主应用程序线程并移至后台线程。