廣播接收器,它和事件處理機制相似,只不過事件的處理機制是程序組件級別的,而廣播處理機制是系統級別的。html
BroadcastReceiver如操做系統啓動完畢,發出廣播信號;低電量提示廣播,應用中耗電量大的部分功能關閉;偵聽短信;android
用於接收並處理廣播通知(broadcastannouncements)。多數的廣播是系統發起的,如地域變換、電量不足、來電來信等。程序也能夠播放一個廣播。程序能夠有任意數量的 broadcast receivers來響應它以爲重要的通知。broadcast receiver能夠經過多種方式通知用戶:啓動activity、使用NotificationManager、開啓背景燈、振動設備、播放聲音等,最典型的是在狀態欄顯示一個圖標,這樣用戶就能夠點它打開看通知內容。ide
一般咱們的某個應用或系統自己在某些事件(電池電量不足、來電來短信)來臨時會廣播一個Intent出去,咱們能夠利用註冊一個Broadcast Receiver來監聽到這些Intent並獲取Intent中的數據。this
使用場合:通訊過程傳遞過來的數據量不大,頻度也不高spa
主要功能操作系統
事件的廣播比價簡單,構建Intent對象,調用sendBroadcast()方法將廣播發出orm
直接定義事件接收器進行接收,重寫onReceiverxml
註冊\註銷Receiver ,registerReceiver(r,filter), unregisterReceiver(r);htm
案例:對象
建立新工程
新建一個廣播接收器,類: MyBroadcast擴展自BroadcastReceiver,一旦收到消息,會執行抽象方法onReceive,以下:
publicvoid onReceive(Context arg0, Intent arg1) {
// TODO Auto-generatedmethod stub
System.out.println("我收到了你的信息:"+arg1.getStringExtra("MyTxt"));
}
3) AndroidManifest.xml,註冊廣播接收器,類: MyBroadcast。
4)MainActivity加進一按鈕,發送消息
<Button
android:id="@+id/butSendBroad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="29dp"
android:text="SendBroad" />
5)實現發送
butSendBroad.setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View v) {
Intent i=newIntent(MainActivity.this,MyBroadcast.class);
i.putExtra("MyTxt", "HelloBroad");
sendBroadcast(i);
}
}
);
6)可先運行,logcat可看到消息
7)動態的註冊和註銷廣播接受器, AndroidManifest中去除廣播接收器類的註冊
<!-- <receiverandroid:name="MyBroadcast"></receiver>-->
8)MainActivity中,添加註冊和註銷兩按鈕
<Button
android:id="@+id/btnReg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/butSendBroad"
android:layout_below="@+id/butSendBroad"
android:layout_marginTop="45dp"
android:text="Regist"/>
<Button
android:id="@+id/btnUnReg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btnReg"
android:layout_centerVertical="true"
android:text="Unreg" />
9) MyBroadcast指定一地址變量:
public static final String ACTION="10-1.intenet.action.mybroad";
10) 定義MyBroadcast實例
private final MyBroadcast MyBRecive=newMyBroadcast();
11)實現註冊
btnReg.setOnClickListener(newView.OnClickListener() {
@Override
publicvoid onClick(View v) {
// TODO Auto-generatedmethod stub
registerReceiver(MyBRecive,new IntentFilter(MyBroadcast.ACTION));
}
});
12)取消註冊
btnUnReg.setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View v) {
// TODO Auto-generatedmethod stub
unregisterReceiver(MyBRecive);
}
});
13)發送廣播更改:
butSendBroad.setOnClickListener(new View.OnClickListener() {
@Override
publicvoid onClick(View v) {
//Intent i=newIntent(MainActivity.this,MyBroadcast.class);
Intent i=newIntent(MyBroadcast.ACTION);
i.putExtra("MyTxt", "HelloBroad");
sendBroadcast(i);
}
}
);
參考:
http://www.cnblogs.com/linzheng/archive/2011/01/22/1942053.html
×××:
http://down.51cto.com/data/1964492