我可以这样做吗:

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

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

每次我想调用register()和unregister()方法?
这种方法有什么潜在的问题吗?

最佳答案

潜在的问题是,如果接收器不是空的并且没有注册,那么您将得到一个IllegalStateException。所以要么创建一个布尔标志,要么catch异常。在注册接收器时,布尔标志将设置为true,然后在注销时设置为false

09-10 14:22