1.靜態注冊,在minifest文件中
<receiver android:name=".BroadcastReceiverDemo" > <intent-filter> <action android:name="com.simware.BroadcastReceiverDemo" > </action> </intent-filter> </receiver>
注冊完之后即可以發送廣播,使用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()來實現
接受廣播使用代碼:
public class BroadcastReceiverDemo extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String msg = intent.getStringExtra("message");
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
}
發送廣播:
Intent mIntent = new Intent("com.simware.BroadcastReceiverDemo"); mIntent.putExtra("message", "hahahahaha"); sendBroadcast(mIntent);
2.動態注冊,在代碼中注冊解注冊
registerReceiver(BroadcastReceiver receiver, IntentFilter filter)
unregisterReceiver(BroadcastReceiver receiver)
在Activity中代碼注冊廣播建議在:onResume()中注冊(也可在onCreate里面注冊);
在Activity中代碼注銷廣播建議在:onPause()中注銷(也可在onDestory里面注銷)
如果一個BroadcastReceiver用於更新UI(User Interface),那么通常會使用這種方法進行注冊,在Activity啟動的時候進行注冊,在Activity不可見后取消注冊。不過應用內的更建議使用LocalBroadcastReceiver
區別:
在AndroidManifest中進行注冊后,不管該應用程序是否處於活動狀態,都會進行監聽,比如某個程序是監聽 內存 的使用情況的,當在手機上安裝好后,不管該應用程序是處於什么狀態,都會執行改監聽方法中的內容。
在代碼中進行注冊后,當應用程序關閉后,就不再進行監聽。如果是在Activity中進行的注冊和解注冊,則生命周期是跟隨該Activity的。我們知道,應用程序是否省電,決定了該應用程序的受歡迎程度,所以,對於那些沒必要在程序關閉后仍然進行監聽的Receiver,在代碼中進行注冊,無疑是一個明智的選擇。