亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

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

廣播接收器的常用方法 時間: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號

回到頂部

主站蜘蛛池模板: 欧美在线观看网站 | 国产女人久久精品 | 亚洲国产成人久久一区二区三区 | 另类亚洲视频 | 91热精品视频 | 天天爽天天爽 | 欧美一区二区三区久久久人妖 | 国产成人手机在线 | 欧美精品小视频 | 国产精品大白天新婚身材 | 欧美视频一 | 天天夜夜人人 | 国产成人综合网在线观看 | 青春草在线视频免费 | 黄 色带 电在线视频 | 久久久久亚洲精品影视 | 青青在线播放 | 久久ri精品高清一区二区三区 | 免费一级特黄 欧美大片 | 亚洲天堂久 | a∨79成人网| 欧美亚洲啪啪 | 九九九热在线精品免费全部 | 久久免费视频1 | 欧美视频网站 | 久久亚洲国产午夜精品理论片 | 久久精品国产亚洲片 | 欧美日韩视频在线播放 | 亚洲视频在线一区 | 日本黄页网站在线观看 | 国产欧美一区二区精品性色99 | 五月婷婷俺也去开心 | 欧美8888| 国产免费人成在线看视频 | 久久国产精品二国产精品 | 精品欧美一区二区在线观看 | 国产免费久久精品99久久 | jzzz日本| 欧美日韩一区二区在线观看视频 | 国产一区二区三区久久小说 | 欧美日韩国产在线人成dvd |