2

この質問は、この質問に関連しています - android bindservice強く。

質問の状況に基づいて私のケースを説明します。

私の場合、bindService() と onServiceConnected() の間で mService 変数が使用されているため、NullPointerException が発生します。

Var mService は他のアクティビティから頻繁に使用され、特に onCreate() で使用される場合があります。

まれに発生しますが、避けたいと思います。

何か公式な方法はないのでしょうか?

シンプルなスレッドを使用して、onServiceConnected() の終了を sleep() で待機しようとしました。しかし、それが良い方法かどうかはわかりません。

4

3 に答える 3

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
}
于 2012-12-06T10:36:21.237 に答える
0

やり方がよくわかりません。ただし、スリープの代わりに待機/通知を使用することをお勧めします。

于 2012-12-06T10:30:54.450 に答える