这个问题与此问题有关 - android bindservice强烈。
我根据问题的情况解释我的案例。
就我而言,发生NullPointerException是因为在bindService()和onServiceConnected()之间使用了mService变量。
Var mService经常用于其他活动,有时尤其是onCreate()。
很少发生,但我想避免它。
有没有某种官方方式?
我尝试使用一个简单的线程等待使用sleep()完成onServiceConnected()。 但是,我不确定这是不是一个好方法。
答案 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()。但是,我不确定这是不是一个好方法。
绝对不是。