Android學習——BroadCast(一)

 

初識廣播


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中止時,廣播也就沒法接收了。

相關文章
相關標籤/搜索