bindService不在按钮单击内工作,但在onCreate - android中工作

时间:2010-09-02 16:09:06

标签: android binding service oncreate

我有一个非常简单的本地服务,我正在尝试绑定到我的活动。昨天我和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

1 个答案:

答案 0 :(得分:2)

this内的doBindService引用在两个实例中都不相同。如果在onCreate中调用它将是对Activity的引用,如果从按钮单击调用它将是对OnClickListener的引用。显然,您不希望您的服务绑定到按钮单击侦听器。

尝试将this更改为YOURACTIVITYNAME.this,看看是否有帮助。