1-2 應用程式基礎

應用程式基礎 

  Android 應用程式是以 Java 語言設計而成的,而 Kotlin 能產生與 Java 完全相容 的類別檔,除了 Java 標準開發工具(Java SE)所提供的類別庫外,還需要 Android 的類別庫,而這些類別庫由 Android SDK 工具提供,Google 也與 JetBrains 公司合作 推出「Android Studio」整合開發工具(IDE),讓開發人員免費使用來開發 Android 應用程式,整體架構如下圖:

  Android SDK 提供多種工具軟體協助開發人員在設計過程中簡化許多複雜的工作,如 ADB 除錯工具、Android 模擬器、SDK 管理器、裝置監控工具等,利用這些工具可以設定、測試、管理,最後將一個應用程式的所有類別、資料、資源等包裝為 APK 檔(Android Package,安裝檔),此檔案的副檔名為 .apk,安裝檔包括了一個應用程式的所有資訊,可安裝在 Android 手機中。

  應用程式在安裝到 Android 系統後,在執行時,各自擁有一個虛擬的沙箱環境,不影響其他的應用程式,也無法存取沙箱外的系統資料。就像在一個 Linux 系統中有不同的使用者帳號,各個帳號擁有不重覆的使用者 ID (User ID),系統會為每個應用程式設定權限,限定其只能夠存取自己的檔案。

  Android 也設計了權限機制,讓應用程式能透過使用者的授權而能夠存取其他應用程式或系統的資源,例如定位資料、聯絡人、檔案等。應用程式提出要求存取裝置上的資料,使用者在安裝應用程式時,可授予這個應用程式所宣告要求的權限。 

應用程式元件

  一個應用程式中能包含許多元件,這些元件是組成一個應用程式所有功能的要件,例如一個操作的畫面、在背景執行的程式或提供資料查詢的介面。當使用者點擊執行一個應用程式,預設會執行這個應用程式所設定的執行進入點,由這個進入點與使用者開始互動,之後,因應使用者的操作而設計其他的元件來滿足功能需求。

  應用程式的元件分為四種類型,開發者可利用其不同的特性,選擇並設 計出符合需求的客製化元件,四種類型如下:

  • Activity 活動

  一個 Activity 可代表使用者介面中的一個畫面,比如說一個登入畫面或一個主功能畫面等,每個畫面活動都是一個獨立的元件個體,但可利用 Intent 意圖的設計啟動另外一個元件,Android 的活動是一個繼承 android.app.Activity 的子類別。

  • Content Provider 內容提供器

  一個應用程式能夠存取自己的資料、檔案,也可透過 Android 的資料庫SQLite 將資料儲存在資料庫中,預設的情況下,這個資料庫的資料只允許該應用程式內的元件可以存取。但透過 Content Provider 機制的設計,能夠將這些資料提供出來,讓其他的應用程式也能夠存取,反之,一個應用程式也能透過其他應用程式所提供的內容提供器存取外部的資料。例如應用程式可透過內容提供器讀取到裝置上的聯絡人資料。

  • Broadcast Receiver 廣播接收器

  廣播接收器並沒有使用者介面,這個元件能夠傾聽特定的事件,Android 使用 Intent 意圖代表系統中所發生的事件,例如撥出電話、螢幕關閉等意圖,應用程式也能夠廣播意圖到系統中,系統會經過比對,找出適合處理這個意圖的應用程式,例如應用程式中送出撥出一個電話號碼的意圖到系統,系統找到能處理撥號的應用程式,啟動撥號應用程式負責這個意圖。廣播接收器是一個實作 android.content.BroadcastReceiver 的子類別,能夠獲取在系統 中發生的特定意圖 Intent。

  • Service服務

  Service 服務不需要設計與使用者互動的介面,而能夠在系統的背景中執行的一種 Java 類別,有時候在設計工作時,希望這些工作能在 Activity 結束時還能夠繼續執行,這時候可以使用 Service 元件設計這些工作,例如下載、上傳檔案、儲存或讀取檔案與網路連線等。

  依不同需求也能設計與 Activity 之間有互動的服務元件,Activity 可以與 Service 建立連繫,這種連繫關係稱為「binding」。服務元件是繼承 android.app.Service 的子類別,是一個無使用者介面,能夠在背景執行工作的元件。   

完成並繼續