1 / 58

人機介面 Android Framework

人機介面 Android Framework. http ://www.cs.nccu.edu.tw/~ chenaho/Workshop. Android OS Stack. 四大程式元件簡介. Activity. Intent. Service. Broadcast Receiver. Content Provider. View System 簡介. Layouts. UI s. 主程式架構說明 & 練習. Android OS Stack. 四大程式元件簡介. Activity. Intent. Service.

clancy
Download Presentation

人機介面 Android Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 人機介面Android Framework http://www.cs.nccu.edu.tw/~chenaho/Workshop

  2. Android OS Stack 四大程式元件簡介 Activity Intent Service Broadcast Receiver Content Provider View System簡介 Layouts UI s 主程式架構說明&練習

  3. Android OS Stack 四大程式元件簡介 Activity Intent Service Broadcast Receiver Content Provider View System簡介 Layouts UI s 主程式架構說明&練習

  4. Framework Stack Overview

  5. Linux Kernel • Base on Linux 2.6 •  已修改kernel, 以避免GPL授權問題(連結) • Linux 版權GNU General Public License version 2 (GPLv2) • Driver移動至linuxuserspace,硬體廠商不需要公開driver source • Power Management修改 • 針對手機環境 • 沒有使用, 就關掉

  6. Libraries • Library以c/c++開發 • 屬系統元件, 開發者可以透過Application Framework 來使用這些功能

  7. Android Runtime • Core Libraries • 對應於Java Programming Language • Dalvik Virtual Machine (簡稱DVM) • 針對手機開發 • Run(綁) on Linux Virtual Memory, multiple processes • 執行指令精簡(節省記憶體)&CPU效率(not JIT) • 詳細說明, 請看連結

  8. Application Framework • Google提供API,此framework內已經具備多種不同的基礎軟體元件,在開發app時,可直接使用 • 內容可參考網頁 • http://developer.android.com/reference/packages.html

  9. Applications • 包含內建的應用程式-聯絡人、eMail 、Map 、Calendar 、簡訊…等等 • 從Market下載的程式 • 自行開發的程式

  10. Applications(cont.) • 使用Java language開發 • 編譯完成, 以tool/aapt.exe 包裹為.apk • Apk ->application • 三種基本特性 • 每個application在自己的Linux process中執行 • 每個process有自己的Java VM, isolate from other applications • 每個application權限獨立分開, 不能讀取其他application的檔案

  11. Android OS Stack 四大程式元件簡介 Activity Intent Service Broadcast Receiver Content Provider View System簡介 Layouts UI s App權限管理與設定

  12. Application Framework上應用程式常用的四大區塊 • 四大元件: • Activities-管理應用程式顯示畫面的類別 • Activity Life Cycle • Services-服務功能 • Services Life Cycle • Broadcast receivers -意圖與廣播接收 • Content Provider-內容提供 • 溝通橋樑:Intent

  13. 1.Activity • 包括UI, 以及與user互動 • 上面可以放button、list、picture、text… • UI可動態調整(增加、減少、換位置) • 透過intent跳轉至其他activity • 費時的程式要放到Service, handler…, 超過5秒, 會出現ANR (Android is Not Responding) Reference: Component Lifecycles

  14. ActivityLife Cycle !!! • 啟動->出現畫面 • onCreate() • onStart() • onResume() • 關閉畫面->結束 • onPause() • onStop() • onDestroy() Reference: Component Lifecycles

  15. Android 的虛擬機(VM)-主要有四種狀態: • Active (活動) • 使用者啟動應用程式或 Activity 後,Activity 運行中的狀態 • 在 Android 平台上,同一個時刻只會有一個 Activity 處於活動(Active)或運行(Running)狀態。 Reference: http://code.google.com/p/androidbmi/wiki/LifeCycle

  16. Paused (暫停) • 「Paused」狀態是當 Activity 暫時暗下來,退到背景畫面的狀態。 • 當我們使用Toast、AlertDialog、或是電話來了時,都會讓原本運行的 Activity 退到背景畫面。新出現的Toast、AlertDialog等介面元件蓋住了原來的 Activity 畫面。Activity 處在「Paused」狀態時,使用者無法與原 Activity 互動。 • Demo => ApiDemo , App/Dialog

  17. Stopped (停止) • 「Stopped」狀態是有其他 Activity 正在執行,而這個 Activity 已經離開螢幕,不再動作的狀態。 • 透過長按「Home」鈕,可以叫出所有處於「Stopped」狀態的應用程式列表。 • 在「Stopped」狀態的 Activity,還可以透過「Notification」來喚醒。

  18. Dead (已回收或未啟動) • 「Dead」狀態是 Activity 尚未被啟動、已經被手動終止,或已經被系統回收的狀態。 • 要手動終止 Activity,可以在程式中呼叫「finish」函式 • 如果是被系統回收,可能是因為記憶體不足了,所以系統根據記憶體不足時的回收規則,將處於「Stopped」狀態的 Activity 所佔用的記憶體回收

  19. 繼續行程時的行為

  20. Intent • 用來描述一個程式想要作些什麼事情 • 每個Intent都帶有一個動作(action),並根據不同的動作去行動 • 例 public void onClick() { Uri uri = Uri.parse("http://www.nccu.com.tw/"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } • 要開啟一個網頁, 由Android去決定誰要開網頁 • Intent Filter : 向系統宣告該Activity可以做甚麼 ?

  21. Demo : • demo code -> demo_Intent • 透過Intent , 達到Activity 之間的切換

  22. Service • 長時間於背景執行, 無UI畫面 • 可避免ANR的問題 • 例 • 播放音樂 • 背景接收網路訊息 • 壓縮or解壓縮檔案 • 利用bindService(), 讓Activity與Service溝通

  23. Broadcast Receiver • 監聽有興趣的Intent • 利用sendBroadcast()啟動一個廣播,並附上對應參數 • 要於5sec.內完成 • 可啟動特定Activity or Service or 更新畫面 • 例Android系統於電力狀況有變動時, 傳遞一個電力廣播 若我們是一個電力容量顯示程式, 則可接收此廣播, 並顯示於畫面上, 或鈴聲, 或震動 • Demo Code\ demo_BroadcastReceiver • 用DDMS模擬簡訊發送,進行測試 Reference : http://www.cnblogs.com/xirihanlin/archive/2009/08/03/1537402.html

  24. Content Provider • 與其他程式分享資料 • 例 • 存取Contact • content://contacts/people/45 (傳回:聯絡人編號45的聯絡人記錄) • content://contacts/people/ (傳回:全部聯絡人) • Demo : demo code/demo_ContentProvider Reference : http://ysl-paradise.blogspot.com/2008/11/content-provider.html http://blog.sina.com.cn/s/blog_3f7f41d40100cnax.html

  25. 上述Android Framework 之下,所帶來的App特色 • 1.應用程式一律平等 (Applications) • http://www.youtube.com/watch?v=3aUjukCdPyQ • 2.應用程式無界限 (Intent filter) • http://www.youtube.com/watch?v=3LkNlTNHZzE • 3.應用程式可輕鬆嵌入網頁 (webView) • http://www.youtube.com/watch?v=Ex7YsQ_YH2U • 4.應用程式可以平行執行 (service 機制) • http://www.youtube.com/watch?v=7lScgyXGxwo Reference : http://www.youtube.com/user/androiddevelopers

  26. Android OS Stack 四大程式元件簡介 Activity Intent Service Broadcast Receiver Content Provider View System簡介 Layouts UI s App權限管理與設定

  27. View

  28. Views

  29. View是所有UI(Widget)的父類別 http://developer.android.com/intl/zh-TW/reference/android/widget/TextView.html Refer: http://school.brad.tw/mod/resource/view.php?id=384

  30. LayOut-決定UI的排版方式 Reference : Declaring Layout.

  31. LayOut Reference : Declaring Layout.

  32. LayOut • Demo: demo code\demo_ChangeLayOut • Reference: ApiDemo ->Views ->Layouts

  33. View – Widget • 直接與使用者進行互動的View Object • EX: Buttons , checkboxes , EditText ,… • EX: Date Picker , Clock , Zoom Controls • 可以根據需要,在既有的Widget 上建立新的View Object • Ref : Building Custom Components

  34. Tabs

  35. ImageView

  36. ImageSwitcher

  37. Progress Bar

  38. Radio Group

  39. Auto-Completion Api demo/com.example.android.apis.view

  40. DatePicker

  41. Rating Bar

More Related