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

潜在的问题是,如果接收者不为空且未注册,您将获得一个IllegalStateException. 所以要么做一个布尔标志或catch异常。布尔标志将true在您注册接收器时设置为,然后false在您取消注册时设置为。

于 2013-02-05T12:26:55.227 回答