Android 應用基礎知識

      網友投稿 717 2022-05-29

      應用基礎知識

      您可以使用 Kotlin、Java 和 C++ 語言編寫 Android 應用。Android SDK 工具會將您的代碼連同任何數據和資源文件編譯成一個 APK(Android 軟件包),即帶有 .apk 后綴的歸檔文件。一個 APK 文件包含 Android 應用的所有內容,它也是 Android 設備用來安裝應用的文件。

      每個 Android 應用都處于各自的安全沙盒中,并受以下 Android 安全功能的保護:

      Android 操作系統是一種多用戶 Linux 系統,其中的每個應用都是一個不同的用戶;

      默認情況下,系統會為每個應用分配一個唯一的 Linux 用戶 ID(該 ID 僅由系統使用,應用并不知曉)。系統會為應用中的所有文件設置權限,使得只有分配給該應用的用戶 ID 才能訪問這些文件;

      每個進程都擁有自己的虛擬機 (VM),因此應用代碼獨立于其他應用而運行。

      默認情況下,每個應用都在其自己的 Linux 進程內運行。Android 系統會在需要執行任何應用組件時啟動該進程,然后當不再需要該進程或系統必須為其他應用恢復內存時,其便會關閉該進程。

      Android 系統實現了最小權限原則。換言之,默認情況下,每個應用只能訪問執行其工作所需的組件,而不能訪問其他組件。這樣便能創建非常安全的環境,在此環境中,應用無法訪問其未獲得權限的系統部分。不過,應用仍可通過一些途徑與其他應用共享數據以及訪問系統服務:

      可以安排兩個應用共享同一 Linux 用戶 ID,在此情況下,二者便能訪問彼此的文件。為節省系統資源,也可安排擁有相同用戶 ID 的應用在同一 Linux 進程中運行,并共享同一 VM。應用還必須使用相同的證書進行簽名。

      應用可以請求訪問設備數據(如用戶的聯系人、短信消息、可裝載存儲裝置(SD 卡)、相機、藍牙等)的權限。用戶必須明確授予這些權限。如需了解詳細信息,請參閱使用系統權限。

      應用組件

      應用組件是 Android 應用的基本構建塊。每個組件都是一個入口點,系統或用戶可通過該入口點進入您的應用。有些組件會依賴于其他組件。

      共有四種不同的應用組件類型:

      Activity

      服務

      廣播接收器

      內容提供程序

      啟動組件

      在四種組件類型中,有三種(Activity、服務和廣播接收器)均通過異步消息 Intent 進行啟動。Intent 會在運行時對各個組件進行互相綁定。您可以將 Intent 視為從其他組件(無論該組件是屬于您的應用還是其他應用)請求操作的信使。

      您需使用 Intent 對象創建 Intent,該對象通過定義消息來啟動特定組件(顯式 Intent)或特定的組件類型(隱式 Intent)。

      Android 應用基礎知識

      對于 Activity 和服務,Intent 會定義要執行的操作(例如,查看或發送某內容),并且可指定待操作數據的 URI,以及正在啟動的組件可能需要了解的信息。例如,Intent 可能會傳達對 Activity 的請求,以便顯示圖像或打開網頁。在某些情況下,您可以通過啟動 Activity 來接收結果,這樣 Activity 還會返回 Intent 中的結果。例如,您可以發出一個 Intent,讓用戶選取某位聯系人并將其返回給您。返回 Intent 包含指向所選聯系人的 URI。

      對于廣播接收器,Intent 只會定義待廣播的通知。例如,指示設備電池電量不足的廣播只包含指示“電池電量不足”的已知操作字符串。

      與 Activity、服務和廣播接收器不同,內容提供程序并非由 Intent 啟動。相反,它們會在成為 ContentResolver 的請求目標時啟動。內容解析程序會通過內容提供程序處理所有直接事務,因此通過提供程序執行事務的組件便無需執行事務,而是改為在 ContentResolver 對象上調用方法。這會在內容提供程序與請求信息的組件之間留出一個抽象層(以確保安全)。

      每種組件都有不同的啟動方法:

      如要啟動 Activity,您可以向 startActivity() 或 startActivityForResult() 傳遞 Intent(當您想讓 Activity 返回結果時),或者為其安排新任務。

      在 Android 5.0(API 級別 21)及更高版本中,您可以使用 JobScheduler 類來調度操作。對于早期 Android 版本,您可以通過向 startService() 傳遞 Intent 來啟動服務(或對執行中的服務下達新指令)。您也可通過向將 bindService() 傳遞 Intent 來綁定到該服務。

      您可以通過向 sendBroadcast()、sendOrderedBroadcast() 或 sendStickyBroadcast() 等方法傳遞 Intent 來發起廣播。

      您可以通過在 ContentResolver 上調用 query(),對內容提供程序執行查詢。

      如需了解有關 Intent 用法的詳細信息,請參閱 Intent 和 Intent 過濾器文檔。以下文檔將為您詳細介紹如何啟動特定組件:Activity、服務、BroadcastReceiver 和內容提供程序。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:瀏覽器存儲方式詳解:cookie、localstorage、sessionstorage的由來和區別
      下一篇:會議直播是什么?
      相關文章
      久久精品国产亚洲AV不卡| 久久亚洲国产中v天仙www| 亚洲国产成人五月综合网| 亚洲成a∨人片在无码2023 | 国产91精品一区二区麻豆亚洲| 亚洲国产精品成人AV在线| 亚洲精品第一国产综合野| 亚洲精品国产成人| 亚洲国产精品成人综合久久久| 亚洲精品一区二区三区四区乱码| 亚洲精品国产手机| 亚洲制服丝袜一区二区三区| 亚洲成年人电影网站| 亚洲AV中文无码字幕色三| 亚洲高清国产AV拍精品青青草原| 亚洲色一色噜一噜噜噜| 亚洲 无码 在线 专区| 丰满亚洲大尺度无码无码专线| 久久亚洲国产最新网站| 亚洲欧洲无码一区二区三区| 亚洲乱人伦中文字幕无码| 亚洲av午夜国产精品无码中文字| 亚洲AV色欲色欲WWW| 色欲色欲天天天www亚洲伊| 亚洲国产欧美国产综合一区 | 国产精品亚洲一区二区三区久久| 亚洲heyzo专区无码综合| 在线观看亚洲专区| 亚洲色图综合在线| 亚洲高清国产拍精品26U| 久久99亚洲网美利坚合众国 | 亚洲成无码人在线观看| 亚洲午夜无码久久久久软件 | 无码天堂va亚洲va在线va| 亚洲精品WWW久久久久久 | 亚洲伊人久久精品影院| 亚洲AV无码一区二区二三区入口 | 亚洲伊人tv综合网色| 91亚洲视频在线观看| 亚洲中文字幕一二三四区| 在线观看国产一区亚洲bd|