Broadcast receiver 广播接收器,用于处理来自于Android系统的消息事件。
作为一个消息接受者,可以接收到特定地址的广播信息。
广播机制:
BroadCastReceiver 有两种注册方式
1 Androidmanifest.xml 文件注册BroadCastReceiver,进行注册时,即使程序已经关闭,也会接收到广播信息。
<receiver android:name=".BroadcastReceiverText">
<intent-filter>
<action android:name="android.intent.action.MY_BROADCAST"/>
</intent-filter>
</receiver>
在应用程序中
注册BroadcastReceiver : registerReceiver(receiver,filter)
取消注册BroadcastReceiver : unregisterReceiver(receiver);
My_BroadCaster broadcaster =new My_BroadCaster(); //建立一个广播监听类对象
IntentFilter filter = new IntentFilter(); // 建立一个过滤器
filter.addAction("android.intent.action.MY_BROADCAST"); // 给过滤器添加地址 可以自己定义
registerReceiver(broadcaster, filter); // 将过滤器绑定到监听对象上
My_BroadCaster是一个继承了的BroadcastReceiver的类。下面是一个注册BroadCaster的实例
BroadcastRecevier类:
package com.example.broadcast02;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class My_BroadCaster extends BroadcastReceiver {
private static final String TAG = "MyReceiver";
@Override
public void onReceive(Context arg0, Intent intent) {
System.out.println("My_BroadCaster ----> onReceive");
String msg = intent.getStringExtra("msg");
Log.i(TAG, msg);
}
}
主线程activity中用三个按钮来实现绑定,解除绑定,和特定地址发送消息的功能
package com.example.broadcast02;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Broadcast02 extends Activity {
private Button ButtonBound;
private Button Buttonexit;
private Button ButtonSendDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_broadcast02);
ButtonBound = (Button)findViewById(R.id.button1);
Buttonexit = (Button)findViewById(R.id.button2);
ButtonSendDate = (Button)findViewById(R.id.button3);
ButtonBound.setOnClickListener(listener);
Buttonexit.setOnClickListener(listener);
ButtonSendDate.setOnClickListener(listener);
}
OnClickListener listener = new OnClickListener() {
My_BroadCaster broadcaster =new My_BroadCaster(); //建立一个广播监听类对象
@Override
public void onClick(View arg0) {
switch (arg0.getId()) {
case R.id.button1:
System.out.println("绑定");
IntentFilter filter = new IntentFilter(); // 建立一个过滤器
filter.addAction("android.intent.action.MY_BROADCAST"); // 给过滤器添加地址 可以自己定义
registerReceiver(broadcaster, filter); // 将过滤器绑定到监听对象上
break;
case R.id.button2:
System.out.println("解除绑定");
unregisterReceiver(broadcaster);
break;
case R.id.button3:
System.out.println("发送消息");
Intent intent = new Intent();
intent.setAction("android.intent.action.MY_BROADCAST");
intent.putExtra("msg", "hello receiver.");
sendBroadcast(intent);
break;
default:
break;
}
}
};
}