和 Java 的 servlet 想法類似,程式不具有 main() 函數作為入口,而是繼承特有的類別,利用物件導向的多型原則,由另外的啟動器來把程式執行起來。HttpServlet 就是 Java Servlet 所可以繼承的其中一個類別,繼承這個類別的,都可以視為一個 servlet 程式。
同樣的,繼承 Android 所認可的類別,就可以被 Android 視為合格的程式,並在特定的時間被呼叫、啟動。而 Android 所認可的類別有 4 種︰
1. Activities︰在中文被翻成很奇怪的「機動程式」,主要用在於一般提供使用者操作介面的程式,繼承 Activity 類別
2. Services︰能在背景執行的程式,不受程式切換而停止。像是音樂播放功能需要放在 Services 類型的程式,這樣才能一面作其它事情,一面聽音樂。繼承 Service 類別
3. Content providers︰提供內容,在物件導向裡,會把資料存取的功能,獨立型成一組類別,讓其它程式只需要知道向它要求或是存入資料,不需要理會背後的實作方式。Content provider 可以和許多不同的媒體溝通,像是 SQLite,網路甚至是其它提供存取權限的程式。繼承 ContentProvider 類別
4. Broadcast receivers︰用來接受事件的類別,例如想要寫一個整理簡訊的應用程式,而捕捉收到簡訊事件就需要靠這種類別。可能和的 Service 合用,讓接受事件的行為在背景運作。繼承 BroadcastReceiver 類別
延續上一篇的內容,由於每一支 Android 程式都是在一個執行緒中(也許應該叫線程 process),所以不單單是沒有 main() 函數,程式之間也不能進行直接呼叫,也因此 Android 提供一個叫作「Intent(意圖)」這個我同樣覺得翻得滿怪的東西,利用告訴系統「想要開某某程式的『想法』」,系統確認有權限後就會代為處理開啟。
就其它書上的說法,意圖不單單只有開啟程式的作用而已,還包含其它的功能。不過目前功能還不到,就留到之後的文章描述吧!
沒有留言:
張貼留言