Android 广播接收者BroadcastReceiver的两种注册方法
BroadcastReceiver示例
我们先实现一个简单的BroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.himmy.action.MY_BROADCAST_1")) {
String from = intent.getStringExtra("from");
Toast.makeText(context, from, Toast.LENGTH_SHORT).show();
} else if (intent.getAction().equals("com.himmy.action.MY_BROADCAST_2")) {
String from = intent.getStringExtra("from");
Toast.makeText(context, from, Toast.LENGTH_SHORT).show();
}
}
}
在Minifest文件中声明注册
<receiver
android:name=".MyBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.himmy.action.MY_BROADCAST_1"/>
<action android:name="com.himmy.action.MY_BROADCAST_2"/>
</intent-filter>
</receiver>
在代码中注册
首先创建一个MyBroadcastReceiver对象
private MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver();
然后注册广播接收者,可以在onCreate()、onStart()或者onResume()方法中注册
@Override
protected void onStart() {
super.onStart();
IntentFilter filter = new IntentFilter("com.himmy.action.MY_BROADCAST_1");
filter.addAction("com.himmy.action.MY_BROADCAST_2");
this.registerReceiver(myBroadcastReceiver, filter);
}
最后不用的话记得取消注册,可以在onPause()、onStop()或者onDestroy()方法中取消注册
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(myBroadcastReceiver);
}
发送广播
因为上面例子我们监听的是自定义广播,所以我们可以在需要的地方发送广播,当接收到的时候会弹出一个toast
findViewById(R.id.send1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.himmy.action.MY_BROADCAST_1");
intent.putExtra("from", "野猿新一");
sendBroadcast(intent);
}
});
findViewById(R.id.send1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.himmy.action.MY_BROADCAST_2");
intent.putExtra("from", "野猿新二");
sendBroadcast(intent);
}
});