Broadcast Receiver是android提供的组件与组件进行通信的机制,不仅是能在同一个应用程序内部进行通信,还可以跨应用程序进行通信。操作系统的一些提示我们程序是可以侦听到的。比如,低电量提示,短信提示,侦听操作系统启动完毕事件等广播。
使用起来方便,但是运行效率比较低。如果需求发送的数据比较高,或者大数据,则不能使用此机制。
如何动态注册和注销广播接收器
注册广播:
registerReceiver(mybc,new Intentfilter(MyBC.ACTION));
reciver实例;
new Intentfilter
给Broadcast Receiver指定一个地址,将mybc注册到这个地址上,以后只要有任何的应用程序向mybc发送广播的话,Broadcast Receiver都可以知道。
写ACTION的要求
包名.intent.action.名称(推荐格式)
发送广播
创建intent使用构造方法,直接用action
Intent i = new Intent(MyBC.ACTION);
使用起来方便,但是运行效率比较低。如果需求发送的数据比较高,或者大数据,则不能使用此机制。
Broadcast Receiver声明
sendBroadcast就可以发送广播
如何动态注册和注销广播接收器
注册广播:
registerReceiver(mybc,new Intentfilter(MyBC.ACTION));
reciver实例;
new Intentfilter
给Broadcast Receiver指定一个地址,将mybc注册到这个地址上,以后只要有任何的应用程序向mybc发送广播的话,Broadcast Receiver都可以知道。
写ACTION的要求
包名.intent.action.名称(推荐格式)
注销:
unregisterReceiver(mybc)发送广播
创建intent使用构造方法,直接用action
Intent i = new Intent(MyBC.ACTION);
MainActivity
package com.cyx.l004using.bc;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private Button btnSendBroadcast,btnRegisterReceiver,btnunregisterReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSendBroadcast = (Button) findViewById(R.id.btnSendBroadcast);
btnSendBroadcast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Intent i = new Intent(MainActivity.this,MyBC.class);
Intent i = new Intent(MyBC.ACTION);
i.putExtra("txt", "hello");
sendBroadcast(i);
}
});
btnRegisterReceiver = (Button) findViewById(R.id.btnRegisterReceiver);
btnRegisterReceiver.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
registerReceiver(mybc, new IntentFilter(MyBC.ACTION));
}
});
btnunregisterReceiver = (Button) findViewById(R.id.btnunregisterReceiver);
btnunregisterReceiver.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
unregisterReceiver(mybc);
}
});
}
private final MyBC mybc = new MyBC();
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
MyBC
package com.cyx.l004using.bc;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBC extends BroadcastReceiver {
public static final String ACTION = "com.cyx.l004using.bc.intent.action.MyBC";
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("onReceive + " + intent.getStringExtra("txt"));
}
}