有没有办法延迟直到执行onServiceConnected()?

时间:2012-12-06 10:20:19

标签: android android-service

这个问题与此问题有关 - android bindservice强烈。

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

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

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

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

有没有某种官方方式?

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

3 个答案:

答案 0 :(得分:0)

我不确定如何做到这一点。但我仍然建议使用更好的wait / notify而不是sleep。

答案 1 :(得分:0)

也许你可以在你的活动中创建一个新方法serviceConnected()并从onServiceConnected()调用它。

像这样:

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
}

答案 2 :(得分:0)

  

有没有某种官方方式?

将引用mService的所有代码移动到在调用onServiceConnected()之前不会被调用的位置。

  

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

绝对不是。

相关问题