我有一个非常简单的本地服务,我正在尝试绑定到我的活动。昨天我和CommonsWare一起完成了这项工作,他让我理顺了,因为我很难让服务绑定。事实证明,我遇到这么多麻烦的原因是我试图将服务绑定到:
bindService(new Intent(this, myService.class), mConnection, Context.BIND_AUTO_CREATE);
在单击按钮后调用的void方法中。
private void doBindService() {
bindService(new Intent(this, SimpleService.class), mConnection, Context.BIND_AUTO_CREATE);
mIsBound = true;
}
private OnClickListener startListener = new OnClickListener() {
public void onClick(View v){
doBindService();
}
};
当我将bindService()调用移动到活动的onCreate方法时,它工作正常。 CommonsWare提到了一些关于该调用异步的内容,我对Android活动创建知之甚少,以了解这是不是我的问题。我知道我的onServiceConnection()是在点击按钮时在我的ServiceConnection()中被调用的,当我尝试访问服务中的成员时,我的mBoundService不起作用。
有人可以告诉我为什么它在按钮点击内不起作用,但在onCreate()内部有效吗?
TIA
答案 0 :(得分:2)
this
内的doBindService
引用在两个实例中都不相同。如果在onCreate
中调用它将是对Activity
的引用,如果从按钮单击调用它将是对OnClickListener
的引用。显然,您不希望您的服务绑定到按钮单击侦听器。
尝试将this
更改为YOURACTIVITYNAME.this
,看看是否有帮助。