有的时候我们并不希望我们的Broadcast一直处于监听状态,那就要求我们能注册和注销BroadcastReceiver;需要在manifest文件里面删除BroadcastReceiver相关配置。
通过registerReceiver和unregisterReceiver来注册和注销:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnSendMsg).setOnClickListener(this);
findViewById(R.id.btnReg).setOnClickListener(this);
findViewById(R.id.btnUnreg).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnSendMsg:
// Intent i = new Intent(this,MyReceiver.class);
Intent i = new Intent(MyReceiver.ACTION);
i.putExtra("data","jikexueyuan");
sendBroadcast(i);
break;
case R.id.btnReg:
if (receiver == null){
receiver = new MyReceiver();
registerReceiver(receiver,new IntentFilter(MyReceiver.ACTION));
}
break;
case R.id.btnUnreg:
if (receiver != null){
unregisterReceiver(receiver);
receiver = null;
}
break;
}
}
private MyReceiver receiver = null;
}
这里注意通过手动注册和注销的时候,我们发送时Intent的初始化方法有所改变,直接通过ACTION来注册,隐式注册。