1. Activity Manager Service (AMS)
作用:
AMS 主要負(fù)責(zé)管理應(yīng)用的生命周期和任務(wù)棧。它處理應(yīng)用的啟動、暫停、恢復(fù)、停止等狀態(tài)。
它還負(fù)責(zé)調(diào)度系統(tǒng)中的活動(Activity),處理任務(wù)切換和多任務(wù)管理。
在開發(fā)中的使用:
開發(fā)者通常不直接與 AMS 交互,但可以通過 Activity 生命周期方法(如 onCreate(), onResume(), onPause())來實(shí)現(xiàn)對應(yīng)用狀態(tài)的管理。
AMS 還影響到應(yīng)用的任務(wù)棧管理,開發(fā)者可以使用 Intent 和 Task Affinity 來控制任務(wù)棧的行為。
知識點(diǎn):
任務(wù)棧:Android 使用棧結(jié)構(gòu)管理活動。新活動會推送到棧頂,而返回到之前的活動則會彈出棧頂?shù)幕顒印?br> Activity 生命周期:了解生命周期方法是開發(fā)和調(diào)試應(yīng)用時必不可少的。
代碼示例:
// 示例:在 Activity 中處理生命周期
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化代碼
}
@Override
protected void onResume() {
super.onResume();
// Activity 恢復(fù)到前臺
}
@Override
protected void onPause() {
super.onPause();
// Activity 被置于后臺
}
@Override
protected void onDestroy() {
super.onDestroy();
// Activity 被銷毀
}
}
2. Package Manager Service (PMS)
作用:
PMS 負(fù)責(zé)管理應(yīng)用程序的安裝、卸載、查詢及其權(quán)限。
提供了關(guān)于已安裝應(yīng)用的信息,如包名、權(quán)限、組件等。
在開發(fā)中的使用:
開發(fā)者可以使用 PackageManager 類來查詢應(yīng)用信息或進(jìn)行相關(guān)操作。
使用 PackageManager 獲取應(yīng)用權(quán)限、安裝狀態(tài)等信息。
知識點(diǎn):
權(quán)限:通過 AndroidManifest.xml 文件聲明應(yīng)用需要的權(quán)限,PMS 管理這些權(quán)限的請求和驗(yàn)證。
內(nèi)容提供者:PMS 還涉及內(nèi)容提供者的注冊和管理。
代碼示例:
// 示例:使用 PackageManager 查詢已安裝應(yīng)用
PackageManager packageManager = getPackageManager();
List<ApplicationInfo> apps = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo app : apps) {
Log.d("AppInfo", "App: " + app.packageName);
}
// 獲取應(yīng)用權(quán)限
try {
PackageInfo packageInfo = packageManager.getPackageInfo("com.example.myapp", PackageManager.GET_PERMISSIONS);
String[] requestedPermissions = packageInfo.requestedPermissions;
if (requestedPermissions != null) {
for (String permission : requestedPermissions) {
Log.d("Permission", "Permission: " + permission);
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
3. Window Manager Service (WMS)
作用:
WMS 負(fù)責(zé)窗口的顯示和管理,包括布局、動畫和用戶交互。
管理系統(tǒng)中的所有窗口,包括活動窗口、對話框、系統(tǒng)提示等。
在開發(fā)中的使用:
開發(fā)者通過 WindowManager 類來進(jìn)行窗口的管理,比如設(shè)置窗口屬性、添加自定義窗口等。
通過 Window 和 View 進(jìn)行界面的布局和交互。
知識點(diǎn):
窗口屬性:如 WindowManager.LayoutParams,用于設(shè)置窗口的各種屬性(如大小、位置、樣式)。
視圖層級:理解視圖的層級和繪制順序?qū)﹂_發(fā)具有復(fù)雜界面的應(yīng)用程序非常重要。
代碼示例:
// 示例:使用 WindowManager 添加自定義窗口
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
TextView textView = new TextView(this);
textView.setText("This is a custom window");
textView.setBackgroundColor(Color.GREEN);
windowManager.addView(textView, params);