Android的广播机制包含三个基本要素:
1.广播(Broadcast)----用于发送广播;
2.广播接收器(BroadcastReceiver)----用户接收广播;
3.意图内容(Intent)----用于保存广播相关信息的媒介。
Broadcast是一种广泛的应用在应用程序之间传输信息的机制。而BroadcastReceiver是对发出来的Broadcast进行过滤并影响的组件。
注册BroadcastReceiver有两种方式:静态注册和动态注册。
方式一:静态的在AndroidManifest.xml中用receiver标签申明注册,并在标签内用intent-fiter标签注册过滤器;
方式二:动态的在代码中先定义并设置好一个IntentFilter对象,然后在需要注册的地方调用Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果动态注册的BroadcastReceiver的Context对象被小慧时,BroadcastReceiver也就自动取消注册了。
案例:
java代码:
package app.book; import android.os.Bundle; import android.widget.ProgressBar; import android.widget.TextView; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class MainActivity extends Activity { ProgressBar battery; TextView batteryCount; IntentFilter intentFilter; /*发送广播: Intent it = new Intent(); it.setAction(action); sendBroadcast(it);*/ //动态注册方式 //接收广播 private BroadcastReceiver bcr = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//生命周期 setContentView(R.layout.activity_main);//设置布局管理器 battery = (ProgressBar) findViewById(R.id.myProgress); batteryCount = (TextView) findViewById(R.id.myText); battery.setMax(100); } @Override protected void onStart(){ super.onStart(); //注册 intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(bcr, intentFilter); } @Override protected void onStop(){ super.onStop(); //取消注册 unregisterReceiver(bcr); } }