BroadCast即爲廣播,爲安卓四大組件之一,用於在應用程序和Activity間傳輸信息。一條廣播,分爲發送和接收兩部分,發送方經過Intent存儲信息,並進行發送。接收方經過BroadCastReceiver來接收消息。若是要指定接受的消息類型,則能夠經過過濾器intentfilter來過濾。BroadCastReceiver的生命週期很短,只有十秒左右,因此一些耗時操做不能在接收方進行,而須要接收方把相應信息傳給Service,並在Service中進行。經常使用的廣播方式有兩種:普通廣播和有序廣播。這篇博文先介紹普通廣播。android
普通廣播主要有以下幾個特色:ide
1.同級別的接受順序隨機spa
2.級別低的後收到廣播code
3.接收器不能攔截廣播也不能修改廣播內容(若攔截或修改則會報錯)對象
4.同級別動態註冊高於靜態註冊blog
如文章開篇所言,發送廣播,是經過Intent對象來發送的,這裏以發送簡單的字符串爲例,代碼以下:繼承
Intent intent=new Intent(); intent.putExtra("test","普通廣播"); intent.setAction("NORMAL"); //設定廣播的Action,用於過濾 sendBroadcast(intent);
建立一個類繼承BroadcastReceiver類,並實現onReceive方法便可:生命週期
public class BC1 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String text=intent.getStringExtra("test"); Toast.makeText(context,"BC1"+text,Toast.LENGTH_SHORT).show(); } }
靜態註冊是在Manifest文件中聲明,代碼以下:字符串
<receiver android:name=".BC1"> <intent-filter android:priority="100"> <action android:name="NORMAL"/> </intent-filter> </receiver>
其中,action即爲過濾所用的關鍵字,priority爲廣播的級別,範圍在-1000和1000之間,數字大的級別高。get
動態註冊實在Activity中註冊,代碼以下:
IntentFilter intentFilter = new IntentFilter("NORMAL"); BC2 bc2 = new BC2(); registerReceiver(bc2,intentFilter);
須要注意的是,因爲是在Activity中註冊的,當Activity中止時,廣播也就沒法接收了。