版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第8章.Android廣播事件處理BroadcastReceiver8.1BroadcastReceiver簡介
BroadcastReceiver顧名思義是指廣播接收器,它和事件處理機制類似,只不過事件處理機制是程序組件級別的(例如,某個按鈕的單擊事件),而廣播事件處理機制是系統(tǒng)級別的。到目前為止我們可以使用Intent來啟動一個程序組件,我們還可以通過使用sendBroadcast()方法來發(fā)起一個系統(tǒng)級別的事件廣播來傳遞消息。我們可以在你的應(yīng)用程序中實現(xiàn)BroadcastReceiver來監(jiān)聽和響應(yīng)這些廣播的Intent。事件的廣播比較簡單,同樣還是構(gòu)建Intent對象,然后調(diào)用sendBroadcast()方法將廣播發(fā)出。事件的接收是通過定義一個繼承BroadcastReceiver的類來實現(xiàn)的,繼承該類后覆蓋其onReceive()方法,在該方法中響應(yīng)事件。8.1BroadcastReceiver簡介Android系統(tǒng)中定義了很多標準的BroadcastAction來響應(yīng)系統(tǒng)廣播事件。例如,ACTION_TIME_CHANGED(時間改變時觸發(fā))、ACTION_BOOT_COMPLETED(系統(tǒng)啟動完成后觸發(fā))、ACTION_PACKAGE_ADDED(添加包時觸發(fā))、ACTIONB_ATTERY_CHANGED(電量低時觸發(fā))。當然,我們也可以自己定義BroadcastReceiver接收廣播事件。8.2自己定義BroadcastReceiver來處理廣播事件自己定義一個廣播是比較簡單的。首先在你的程序組件里構(gòu)建你要廣播的Intent,使用sendBroadcast方法發(fā)送出去。其次定義一個廣播接收器,該廣播接收器繼承BroadcastReceiver,并且覆蓋onReceive()方法來響應(yīng)事件。最后注冊該廣播接收器,我們可以在代碼中注冊,也可以在AndroidManifest.xml配置文件中注冊。下面通過一個實例來演示Intent發(fā)出廣播和BroadcastReceiver處理廣播的過程,實例步驟說明如下。
(1)創(chuàng)建一個工程“Chapter08_BroadcastReceiverl",在“com.amaker.ch08.app”包中創(chuàng)建一個MainActivity。在該類的頂部聲明一個字符串定義廣播Action,聲明一個Button對象響應(yīng)單擊事件發(fā)出廣播。在OnCreate()方法中設(shè)置當前布局視圖,實例化8.2自己定義BroadcastReceiver來處理廣播事件Button對象,為Button添加單擊監(jiān)聽器,在onClick()方法中創(chuàng)建Intent對象,為其設(shè)置Action屬性和Extra屬性,使用該Intent發(fā)出廣播。packagecom.amaker.ch08.app;
importcom.amaker.ch08.app.R;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;8.2自己定義BroadcastReceiver來處理廣播事件publicclassMainActivityextendsActivity{
//定義一個Action常量
privatestaticfinalStringMY_ACTION="com.amaker.ch08.action.MY_ACTION";
//定義一個Button對象
privateButtonbtn;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//設(shè)置當前布局視圖
setContentView(R.layout.main);
btn=(Button)findViewById(R.id.Button01);
//為按鈕設(shè)置單擊監(jiān)聽器
btn.setOnClickListener(newOnClickListener(){8.2自己定義BroadcastReceiver來處理廣播事件
publicvoidonClick(Viewv){
//實例化Intent對象
Intentintent=newIntent();
//設(shè)置Intentaction屬性
intent.setAction(MY_ACTION);
//為Intent添加附加信息
intent.putExtra("msg","地瓜地瓜,我是土豆,收到請回復(fù),收到請回復(fù)!");
//發(fā)出廣播
sendBroadcast(intent);
}
});
}}8.2自己定義BroadcastReceiver來處理廣播事件(2)在工程的res\layout目錄下創(chuàng)建一個布局文件main.xml,在其中添加一個Button組件。<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<Buttonandroid:text="發(fā)出廣播..."
android:id="@+id/Button01"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>8.2自己定義BroadcastReceiver來處理廣播事件(3)在工程的“com.amaker.ch08.app”包中定義一個MyReceiver類,該類繼承BroadcastReceiver類,覆蓋onReceive()方法來接收廣播并顯示收到的消息。packagecom.amaker.ch08.app;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.widget.Toast;publicclassMyReceiverextendsBroadcastReceiver{
@Override
publicvoidonReceive(Contextcxt,Intentintent){
8.2自己定義BroadcastReceiver來處理廣播事件
//從Intent中獲得信息
Stringmsg=intent.getStringExtra("msg");
//使用Toast顯示
Toast.makeText(cxt,msg,Toast.LENGTH_LONG).show();
}}8.2自己定義BroadcastReceiver來處理廣播事件(4)在工程的AndroidManifest.xml配置文件中聲明廣播接收器組件<receiverandroid:name="MyReceiver"><intent-filter>
<actionandroid:name="com.amaker.ch08.action.MY_ACTION"/>
</intent-filter>
</receiver>8.2自己定義BroadcastReceiver來處理廣播事件程序運行結(jié)果如圖8.1所示
圖8.1測試廣播事件8.3系統(tǒng)廣播事件的處理除了上面我們自己定義的廣播事件,Android系統(tǒng)還提供了很多標準廣播Action。這些廣播是系統(tǒng)自動發(fā)出的,我們直接定義事件接收器進行接收就可以使用這些系統(tǒng)消息了。常見的標準廣播Action常量如表8.1所示。8.3系統(tǒng)廣播事件的處理
下面我們通過實例來看看如何接收系統(tǒng)發(fā)出的廣播,本實例我們通過接收系統(tǒng)啟動完成(ACTION_
BOOT_COMPLETED)廣播來測試系統(tǒng)廣播事件。接收系統(tǒng)發(fā)出的廣播,我們不需要自己再定義發(fā)出廣播的Intent,只需要定義接收器就可以了。實例步驟說明如下。(1)在8.2節(jié)的工程基礎(chǔ)上,在“com.amaker.ch08.app”包中創(chuàng)建一個MyReceiver類,該類繼承BroadcastReceiver覆蓋onReceive()顯示系統(tǒng)啟動完成廣播信息。8.3系統(tǒng)廣播事件的處理publicclassMyReceiver2extendsBroadcastReceiver{
@Override
publicvoidonReceive(Contextcontext,Intentintent){
//顯示廣播信息
Log.i("my_tag","BOOT_COMPLETED~~~~~~~~~~~~~~~~");
}}(2)在工程的AndroidManifest.xml配置文件中注冊該接收器,注意這里<intent-filter>中的<action>屬性必須是“ent.action.BOOT_COMPLETED”,才能接收系統(tǒng)啟動完成廣播事件。8.3系統(tǒng)廣播事件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理行業(yè)安全生產(chǎn)工作總結(jié)
- 門診導(dǎo)醫(yī)服務(wù)總結(jié)
- 傳媒行業(yè)營銷實踐總結(jié)
- 娛樂行業(yè)客服崗位總結(jié)
- 《眼貼體驗思路》課件
- 《羅蘭貝格品牌戰(zhàn)略》課件
- 2024年廣東省東莞市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年陜西省渭南市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年福建省莆田市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年四川省資陽市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 道路運輸企業(yè)安全生產(chǎn)管理人員安全考核試題題庫與答案
- 年終抖音運營述職報告
- 車間修繕合同模板
- 腦梗死患者的護理常規(guī)
- 2024年7月國家開放大學法律事務(wù)??啤斗勺稍兣c調(diào)解》期末紙質(zhì)考試試題及答案
- 護士條例解讀
- 醫(yī)務(wù)人員崗前培訓(xùn)課件
- SQE年終總結(jié)報告
- 檢修工(題庫)附答案
- 2025屆高考語文一輪復(fù)習:小說情節(jié)結(jié)構(gòu)之伏筆 練習題(含答案)
- 《化學實驗室安全》課程教學大綱
評論
0/150
提交評論