我可以这样做吗:
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
。