Android 在onResume中调用服务时发生NullPointerException
我试图调用服务,并根据响应将用户重定向到其他活动(登录) 如果我等到按钮点击后才执行此操作,则它工作正常(因为服务已绑定),但如果我在Resume上执行此操作,则会出现以下异常:Android 在onResume中调用服务时发生NullPointerException,android,service,binding,Android,Service,Binding,我试图调用服务,并根据响应将用户重定向到其他活动(登录) 如果我等到按钮点击后才执行此操作,则它工作正常(因为服务已绑定),但如果我在Resume上执行此操作,则会出现以下异常: ERROR/AndroidRuntime(2226): FATAL EXCEPTION: main java.lang.RuntimeException: Unable to resume activity {...MyActivity}: java.lang.NullPointerExcep
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();
}
是什么让你认为
fooService
存在于onResume()
对bindService()
的调用是异步的。当它发生的时候,它就会发生。在调用onServiceConnected()
之前,您无法doSomething()
,并且在调用onResume()
时可能尚未调用onServiceConnected()
而且,如果
fooService
上的get()
正在进行网络I/O,您需要重写应用程序,将其从主应用程序线程转移到后台线程。是什么让您认为fooService
存在于onResume()
对bindService()
的调用是异步的。当它发生的时候,它就会发生。在调用onServiceConnected()
之前,您无法doSomething()
,并且在调用onResume()
时可能尚未调用onServiceConnected()
而且,如果
fooService
上的get()
正在进行网络I/O,您需要重新编写应用程序,将其从主应用程序线程转移到后台线程。@UBM:如果您来自Javascript背景,那么PhoneGap可能是您更好的选择。“它正在进行网络I/O…你能提供一些资源来帮助我吗?”--这里有一个IntentService
,它接收下载文件的命令,然后下载文件,并在下载完成后让活动知道结果:“如果我依赖于该服务,我如何在它准备好时调用它?”--从onServiceConnected()
@UBM调用它:如果你有Javascript背景,也许PhoneGap对你来说是一个更好的选择。“它正在进行网络I/O…你能提供一些资源来帮助我吗?”--这里有一个IntentService
,它接收下载文件的命令,然后下载文件,并在下载完成后让活动知道结果:“如果我依赖于该服务,我如何在它准备好时调用它?”--从服务连接()上的调用它。