iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 10
0
自我挑戰組

Android API超初學!!系列 第 10

[Android API] [Day 10] Android 基本4元件

番外篇敷衍學習了幾天,今天終於要來學Andriod API了(感動)。

我一樣先讀 官網,它跟iOS比最大的好處是有中文化,所以不用再繼續練翻譯了。但是,天底下哪有這麼好的事?讓我們來比較看看中英文版的同一頁:
https://ithelp.ithome.com.tw/upload/images/20181021/20112439Rp6T5OS8gi.png
https://ithelp.ithome.com.tw/upload/images/20181021/20112439wQcd47yklA.png

恩,繼續練習翻譯囉orz

4個重要component

Activity

  • 每一個畫面都是一個activity,且互相獨立。例如寫email的activity可以執行相機的activity,讓使用者在寫email時可以插入照片。

  • 系統對activity有做一些處理:

    • 確保使用者現在執行的activity的process不要被砍
    • 紀錄剛被砍的activity process有哪些資訊,因為使用者很可能再次使用,概念應該類似least recently used algorithm
    • 讓APP處理activity process kill,這樣才能讓APP紀錄上次執行狀態
    • 提供APP不同activity間溝通的功能

Service

  • 背景執行,所以沒有UI。例如使用者可使用音樂程式activity,執行背景播放音樂的service,這時系統必須要讓這個service process被keep住才行。
  • 某些service不是使用者直接叫起來的,系統有很大的自由來管理這些process。
  • 若A service要使用到B service,系統會知道要keep A和B兩個process。
  • 一些系統功能被做成service,讓其餘APP可輕鬆使用,如notification listener、螢幕保護程式、輸入法、accessibility service(殘障人士使用)。

Broadcast receiver

  • 系統廣播。發起系統廣播的APP不需一直執行,系統也能收到通知。例如鬧鐘APP發起明天早上9 am的鬧鈴廣播,就算APP被關了,使用者明天也會被鬧鐘吵醒。
  • 一些系統發起的broadcast,例如關閉螢幕、電池快沒電了等。
  • 其他APP自行發起broadcast的例子,如讓其他APP知道某檔案已經下載好,可以使用了。
  • broadcast receiver一樣沒有UI,所以可透過status bar notification告知使用者有廣播發生。

Content provider

  • 管理已分享的資料。資料可能被儲存在本機、資料庫或網路。透過content provider,其他有權限的APP即可使用或修改這些資料。對系統而言,content provider是APP的其中一種入口點,由APP決定自己資料的URI(Uniform Resource Identifier,最常見形式如URL),供系統識別。
  • APP就算被砍了,檔案URI也會一直存在,系統只要確保讀取該URI檔案時,保存該檔案的APP有在運作即可。
  • content provider安全機制。例如使用者在APP A複製一張圖片在剪貼簿,APP A可把它的content provider鎖上,當APP B想存取剪貼簿裡的URI,只能存取該圖片,而不能存取APP A的其餘內容。

上一篇
[番外篇] [Day 9] iOS Human Interface (3) App Architecture - part 2
下一篇
[Android API] [Day 11] Android 資源管理
系列文
Android API超初學!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言