2

这个问题与这个问题有关 - android bindservice strong

我根据问题的情况解释我的情况。

就我而言,发生 NullPointerException 是因为在 bindService() 和 onServiceConnected() 之间使用了 mService 变量。

Var mService 经常在其他活动中使用,有时尤其是在 onCreate() 中。

它很少发生,但我想避免它。

没有某种官方方式吗?

我尝试使用一个简单的线程来等待使用 sleep() 完成 onServiceConnected()。但是,我不确定这是否是一个好方法。

4

3 回答 3

0

Maybe you can create a new method serviceConnected() in your activity and call it from onServiceConnected().

Like this:

private ServiceConnection connection = new ServiceConnection() {
    public void onServiceConnected(ComponentName className, IBinder iservice) {
        mService = ILocService.Stub.asInterface(iservice);
        mBound = true;
        **serviceConnected();**
    }

    public void onServiceDisconnected(ComponentName className) {
        mService = null;
        mBound = false;
    }

};

private void serviceConnected(){ 
   // here mService is **not** null
}
于 2012-12-06T10:36:21.237 回答
0

没有某种官方方式吗?

将所有引用的代码移动mService到一个点,直到它被调用时才会onServiceConnected()被调用。

我尝试使用一个简单的线程来等待使用 sleep() 完成 onServiceConnected()。但是,我不确定这是否是一个好方法。

绝对不。

于 2012-12-06T12:30:43.420 回答
0

我不确定如何做到这一点。但我仍然建议使用更好的等待/通知而不是睡眠。

于 2012-12-06T10:30:54.450 回答