日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 廣播接收器的常用方法

廣播接收器的常用方法 時間:2018-09-26      來源:未知

廣播接收器是Android四大組件之一, 是Android組件之間的通信一種方式,適用于以下情況:

第一種 : 同一app內部的同一組件內的消息通信(單個或多個線程之間);

第二種 : 同一app內部的不同組件之間的消息通信(單個進程);

第三種 : 同一app具有多個進程的不同組件之間的消息通信;

第四種 : 不同app之間的組件之間消息通信;

第五種 : Android系統在特定情況下與App之間的消息通信。

廣播接收器的生命周期

只有一個 onReceive()方法

發送廣播

第一種 :顯示廣播 Intent intent = new Intent(this, MyReceicer.class); 傳遞包含信息

第二種 :隱式廣播 應用 action --- "暗號"

Intent intent = new Intent(action);

在清單文件中 注冊廣播

BroadcastReceiver總體上可以分為兩種注冊類型:靜態注冊和動態注冊

例子 1:普通廣播: 自定義一個廣播接收器類,實現能接收廣播信息

按鈕觸發-----> 發送廣播 -----> 自定義廣播接收器 ----> 吐司顯示

(1)創建自定義廣播接收器類 MyBroadcastReceiver 繼承 BroadcastReceiver

覆蓋 onReceive() 方法 寫入執行的操作(不能太耗時):

public class MyBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

Toast.makeText(context, intent.getStringExtra("name"),

Toast.LENGTH_LONG).show();

}

}

自定義廣播接收器需要繼承基類BroadcastReceivre,并實現抽象方法onReceive(context, intent)方法。廣播接收器接收到相應廣播后,會自動回到onReceive(..)方法。

(2)靜態注冊廣播接收器 : 在AndroidManifest.xml 清單文件中加入 receiver聲明

........................

(3)在活動的布局文件中,設置 一個按鈕 Button 設置id 長 寬

android:id="@+id/button1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_below="@+id/textView1"

android:layout_marginLeft="46dp"

android:layout_marginTop="71dp"

android:layout_toRightOf="@+id/textView1"

android:onClick="onClick" 設置監聽

android:text="點擊發送廣播" />

(4)在布局文件對應的.java活動文件中, 出現

 

 

鼠標點擊 選擇第一項添加onClick()方法

 

 

在方法內添加 發送廣播命令語句:這是只要 用戶點擊按鈕,就會發送廣播

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

Intent in = new Intent("mybroadcast");

in.putExtra("name", "zhangsan");

sendBroadcast(in);

}

(5)啟動模擬器, 運行當前的android 工程, 點擊按鈕,觀察是否有吐司出現。

例子2:使用系統廣播,獲取電池電量,并用動態注冊廣播接收器方式實現:

(1)在布局文件中, 加入一個進度條:

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:indeterminate="false"

style="?android:attr/progressBarStyleHorizontal"

android:layout_gravity="bottom">

(2)在主Activity中, 聲明一個屬性 ProgressBar pb;

(3)在onCreate() 中 pb 綁定id :

pb = (ProgressBar) findViewById(R.id.progressBar1);

(4)自定義一個類BatteryReceiver 繼承 BroadcastReceiver

覆蓋 onReceive() 方法:

private class BatteryReceiver extends BroadcastReceiver {

int level = 0;

int scale = -1;

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

if (scale == -1) {

scale = intent.getIntExtra("scale", 0);

pb.setMax(scale);

}

level = intent.getIntExtra("level", 0);

pb.setProgress(level);

}

}

(5)在onCreate()方法中, 動態注冊廣播接收器:

動態注冊時,無須在AndroidManifest中注冊組件。直接在代碼中通過調用Context的registerReceiver函數,可以在程序中動態注冊BroadcastReceiver。

添加:

registerReceiver(new BatteryReceiver(), new IntentFilter(

Intent.ACTION_BATTERY_CHANGED));

后onCreate()方法:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

pb = (ProgressBar) findViewById(R.id.progressBar1);

registerReceiver(new BatteryReceiver(), new IntentFilter(

Intent.ACTION_BATTERY_CHANGED));

}

(6)打開模擬器, 執行Android 程序。

上一篇:OpenWrt筆記---lua環境搭建

下一篇:C++中的標準輸入和輸出

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 凶宅幽灵| 啊嗯啊| 红旗车驾驶员个人主要事迹材料| 10的认识评课优点及不足| 塔木德全文阅读免费| 噜啊噜在线视频| 好看电影网站免费看| 欧若拉公主电视剧国语版全集在线观看| 查宁·塔图姆| 钱月笙| land of the lost| 幻乐森林演员表| 验光单子的数据怎么看| 范冰冰激情| dy充值| 救急战队| 电影《ol3》完整版在线观看| 那些年,那些事 电视剧| 经典常谈周易第二读书笔记 | 大森元贵| 《致命弯道3》| 浪人街| 谭咏麟电影| 南来北往电视剧剧情| 王宝强盲井| 赵依芳| 中国最贵的10大香烟| 陷入纯情| 六级词汇电子版| 秀人网尤妮丝深夜福利视频| 许天奇个人资料| 乱世佳人电视剧免费观看完整版 | 喜羊羊第一部全集免费| 瘰螈| 下巴有个凹陷| 红电视剧演员表| 罗比威廉姆斯| 2025小升初真题卷英语| 小松未可子| 二年级最佳家长评语| deathnote|