Part 8 Broadcast Receiver、Service和App Widget

Slides:



Advertisements
Similar presentations
办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
Advertisements

環境游離輻射 ( 六 ) 輻射與核能發電. 媽!這是我上班的 地方-核電廠。 地方好寬闊喔! 聽說日本原子彈爆炸死好幾 萬人,阿榮啊!你在這裡上 班,安全嗎?
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
《小狗包弟 》之 从阅读到写作 学校:和风中学 年级:高一 参赛者:彭龙英. 预习检测一 思考:同学们读完作者与包弟 的故事后,说一说作者所表达的情 感是什么?
虹膜识别健康养老服务智能系统项目.
探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆  探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆 
職校、五專群科簡介.
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
学生教育办介绍 2015年9月.
江苏省工程造价管理协会 工作报告 2015年4月21日 扬州.
101年8月份 嘉義市道路交通安全聯席會報 酒駕行為與肇事現況分析 主講人:內政部警政署交通組科長張夢麟 1.
高校邦在线学习平台 学生学习手册 北京高校邦科技有限公司.
避開鳥事、走好運! 懂卜卦的人,一輩子不吃虧!
财务管理.
Part 2 開發Android應用程式的流程
广东省教育厅教研室 黄志红 ,     研究改进行动     反思促使成长 广东省教育厅教研室  黄志红 ,
新华沪贵银APP 使用指南.
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
政府扶持资金通览 技术改造篇.
103學年度第1階段 志願選填試探後輔導作為 成效檢討與精進建議
活动主题:佛山智造 中国骄傲 随着互联网、云计算、大数据以及移动互联网的快速发展,技术不仅仅是一种工具,正加速重构着品牌的新格局。
四川省卫生监督移动 执法终端介绍 发言人:陈成身 四川省卫生执法监督总队.
獎補助經預計支用報告 105年.
Activity之间的数据传递.
ArrayAdapter & Spinner
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
使用Android控制Arduino 史先强
7.3 Intent传值.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Ch5 Android應用程式的主要組成.
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Android Intent 建國科技大學 資管系 饒瑞佶 2011/1.
統計圖表的製作.
第4章 Android生命周期.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
ANDROID PROGRAMMING2.
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
實驗十四:顯示與控制地圖.
第2讲 移动应用开发基础知识(二) 宋婕
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第8章 Service解析.
Android 视频教程简介.
华东理工大学 关于新校园卡功能启用的相关说明 2018年09月07日.
C/C++/Java 哪些值不是头等程序对象
第10章 GPS位置服务与地图编程.
主编:钟元生 赵圣鲁.
Android 开发入门.
Android Application Component
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
Location Based Services - LBS
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
102學年度下學期 班親會 五年仁班 楊曉逸老師.
第二階段「校園徒步區建置」 執行成果報告.
第16章 天气预报 --Web Service调用
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
第9章 BroadcastReceiver的使用
Android进程间通讯.
第6章 Android客户端模块实现 QQ群(App开发案例教程--清华) :
加速感測器 靜宜大學資管系 楊子青.
為民服務白皮書 台灣電力公司彰化區營業處  彰化區營業處 為民服務白皮書 誠信 關懷 服務 成長 1.
实验课程学习手册.
云控APP说明书 适用于云控平台配置.
云控APP说明书 适用于云控平台配置.
Presentation transcript:

Part 8 Broadcast Receiver、Service和App Widget 單元43 Broadcast Intent和Broadcast Receiver 單元44 Service是幕後英雄 單元45 App Widget小工具程式 單元46 使用Alarm Manager強化App Widget程式 單元47 App Widget程式的其它二種執行模式 2

單元43 Broadcast Intent和Broadcast Receiver

Broadcast Intent的運作機制 Broadcast Intent物件的運作機制包含二個部分,一個是送出Intent物件的程式,另一個是監聽廣播訊息的程式(稱為Broadcast Receiver)。Broadcast Receiver程式本身是一個類別,而且必須繼承BroadcastReceiver類別,程式必須向Android系統註冊為Broadcast Receiver,並指定要監聽的廣播訊息。當該監聽的廣播訊息被某個程式送出時,Android系統會啟動所有監聽該廣播訊息的Broadcast Receiver程式,並執行它們的onReceive()方法。

Broadcast Intent的運作機制 Broadcast Receiver程式只有在Android系統執行它的onReceive()方法時才是處於有效狀態,一旦onReceive()方法執行完畢,就有可能被移除,直到下次監聽的廣播訊息出現才會再一次執行,例如當你在onReceive()方法中產生一個thread執行某一項比較耗時的工作時,由於onReceive()方法執行結束且Broadcast Receiver程式被系統移除,此舉將導致Broadcast Receiver程式所建立的thread也有可能被Android系統強制清除,因此非同步的工作並不適合在onReceive()方法中執行。

程式廣播Intent物件的方法 Step 1. 建立一個Intent物件,並指定要廣播的訊息 Intent it = new Intent(“tw.android.MY_BROADCAST1”); 廣播的訊息其實就是一個字串,每一個程式都可以建立自己的廣播訊息。為了避免不同的程式誤取相同的廣播訊息名稱,一般建議是採用前後顛倒的網址模式來命名,如以上的範例。

程式廣播Intent物件的方法 Step 2. 如果需要附帶資料,可以建立一個Bundle物件,再把資料一項一項放入Bundle物件中,最後把Bundle物件設定給Intent物件 Bundle bundle = new Bundle(); bundle.putString(“sender_name”, “Broadcase Receiver範例程式”); it.putExtras(bundle); 讓Intent物件附帶資料還有一個比較簡便的作法,就是直接呼叫Intent物件的putExtra()方法,它也可以把各種型態的資料一項一項放入Intent物件。 it.putExtra("sender_name", "Broadcase Receiver範例程式");

程式廣播Intent物件的方法 Step 3. 呼叫sendBroadcast()方法完成廣播Intent物件。 sendBroadcast(it);

建立Broadcast Receiver Step 1. 在程式專案中新增一個繼承BroadcastReceiver類別的新類別,我們可以把這個新類別取名為MyBroadcastReceiver。在這個類別中需要完成onReceive()方法中的程式碼,這個方法就是當監聽的廣播訊息出現的時候,會被Android系統啟動執行。 public class MyBroadcaseReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String sender = intent.getExtras().getString("sender_name"); … } } 這個範例我們只是簡單地從接收到的Intent物件中取出資料。注意這個Intent物件是onReceive()方法的引數,不需要呼叫getIntent()方法取得。

建立Broadcast Receiver Step 2. 在主程式中向Android系統註冊步驟1所建立的Broadcast Receiver。註冊的方法有二種,第一種是在程式專案的AndroidManifest.xml檔案中描述這個Broadcast Receiver這樣就完成註冊 <?xml …> <manifest …> <application …> <activity android:name=".Main" …> … </activity> <receiver android:name=".MyBroadcaseReceiver“ android:label="@string/app_name"> <intent-filter> <action android:name="tw.android.MY_BROADCAST" /> </intent-filter> </receiver> </application> </manifest>

建立Broadcast Receiver 第二種方法是在程式碼中呼叫註冊的方法進行註冊。這種方法還可以把已經註冊過的Broadcast Receiver取消,以下先看註冊的程式碼: IntentFilter itFilter = new IntentFilter("tw.android.MY_BROADCAST"); MyBroadcaseReceiver myReceiver = new MyBroadcaseReceiver(); registerReceiver(mMyReceiver, itFilter); 如果要取消已經註冊的Broadcast Receiver,則執行以下程式碼: unregisterReceiver(myReceiver); 只有使用第二種方式註冊的Broadcast Receiver才能取消。

範例程式 在這個程式中會建立2個Broadcast Receiver監聽不同的廣播訊息。第一個Broadcast Receiver(以下稱為BroadcastReceiver1)是利用AndroidManifest.xml檔案進行註冊,第二個Broadcast Receiver(以下稱為BroadcastReceiver2)是利用程式碼進行註冊。程式執行畫面的第一個按鈕就是註冊BroadcastReceiver2,第二個按鈕則是取消註冊BroadcastReceiver2。 程式剛開始執行的時候,按下「傳送MY_BROADCAST1」按鈕時,手機螢幕會出現一個Toast訊息視窗通知BroadcastReceiver1已經收到廣播訊息。如果按下「傳送MY_BROADCAST2」按鈕則沒有任何結果,因為還沒註冊BroadcastReceiver2。按下「註冊BroadcastReceiver2」按鈕,然後再按一次「傳送MY_BROADCAST2」按鈕。此時就會出現一個Toast訊息視窗通知BroadcastReceiver2已經收到廣播訊息。

範例程式 請參考範例程式專案中的介面佈局檔、主類別程式檔、和二個Broadcast Receiver類別的程式檔。