2

私はそのようにすることができます:

mBoradcastReciver = null;
void register(){
  if(mBoradcastReciver == null){
     mBoradcastReciver = new ...
     registerReceiver(mBroadcastReceiver, ....);
  }
}

void unregister(){
    if(mBoradcastReciver != null){
       unregisterReceiver(mBroadcastReceiver);
       mBoradcastReciver = null;
    }

メソッド register() と unregister() は、いつでも呼び出すことができますか? そのアプローチに潜在的な問題はありますか?

4

1 に答える 1

3

潜在的な問題は、レシーバーが null ではなく、登録されていない場合にIllegalStateException. したがって、ブールフラグまたはcatch例外を作成します。trueレシーバーを登録するとブール値フラグが設定され、false登録を解除すると設定されます。

于 2013-02-05T12:26:55.227 に答える