一、概述
Android 系統是由 Google 開發並發布的基於 Linux 內核的開源移動設備操作系統。由於 Android 設備逐漸成為主流智能手機和平板電腦的操作系統,因此它的架構也變得越來越重要。Android 應用程序的架構由四個主要組件組成:應用層,框架層,運行時庫,和 Linux 內核。在這篇文章中,我們將逐一介紹每一層的技術和架構,並說明其優缺點。
二、應用層
Android 應用程序通過 Java 編寫,運行在 Dalvik 虛擬機 (現在改為 ART 虛擬機) 上。應用層是用戶直接接觸的界面,它包括 UI 組件與控制項,和 用於處理用戶不同輸入和輸出的事件。應用層實現的組件通常包括 Activity,Service 和 BroadcastReceiver。
Activity 提供了一個用戶界面,並且可以接收來自其他應用程序的事件。它還可以被其他應用程序調用,並可以啟動其他 Activity 和 Service。
Service 是一種後台運行的組件,沒有用戶界面。它被設計為長時間運行,處理耗時操作,或為其他應用程序提供服務。
BroadcastReceiver 允許應用程序接收廣播消息,可能來自系統或其他應用程序。BroadcastReceiver 可以啟動 Activity 或 Service,或執行其他操作。
三、框架層
框架層是應用程序和核心庫之間的介面。它提供了應用程序框架,包括它們如何與底層資源一起工作。它提供的服務包括內容提供器、視圖系統和通信機制。
內容提供器允許應用程序共享數據。它提供了標準介面,以便其他應用程序可以查詢和操作這些數據。
視圖系統是應用程序的用戶界面,它提供了標準的 UI 組件和布局管理器。
通信機制指的是 IPC (Inter-Process Communication)。Android 應用程序通信最終都是通過系統提供的一些 IPC 機制,比如,Binder,Intent,Broadcast 等。
四、運行時庫
運行時庫包括核心庫和 Dalvik(ART)虛擬機。核心庫是 Android 上的常見 Java 庫,包含了豐富的 Java API 集合。Dalvik(ART)虛擬機充當運行 Java 代碼的基礎。它有一個專門的位元組碼格式(DEX),它是處理 Android 平台上的 Java 代碼的更高效的方法。
Android 5.0 及更高版本使用 ART 運行庫替換 Dalvik。ART 通過先將 Dex 文件轉換成本地機器碼,使應用程序在運行時更快,並降低了應用程序啟動時間。在 ART 下,未使用的部分會被刪除掉,虛擬機預熱時間被降低了。但是,Dex 格式仍然保留,以兼容先前的 Android 版本。
五、Linux 內核
Linux 內核是 Android OS 的基礎。它提供底層的硬體抽象層(HAL),包括硬體驅動程序,メ模塊和堆棧。它還提供了安全機制,進程管理和內存管理。
// 下面是一個開發一個簡單 Android 應用程序的實例代碼: package com.example.myfirstapp; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.EditText; public class MainActivity extends AppCompatActivity { public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.editText); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } } // 上面代碼會啟動 DisplayMessageActivity。下面代碼是 DisplayMessageActivity: package com.example.myfirstapp; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class DisplayMessageActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = (TextView) findViewById(R.id.textView); textView.setText(message); } }
原創文章,作者:RLPZJ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370033.html