天天看點

Android幾種FrameWork(Manager)的用法

Android架構分析

一、安卓架構圖直覺

Android系統架構由五部分組成,Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。以下這張圖展示了Android系統的主要組成部分:

Android幾種FrameWork(Manager)的用法

1、Linux Kernel

Android基于Linux2.6提供核心的系統服務,例如:安全、記憶體管理、程序管理、網絡堆棧、驅動模型。Linux Kernel也作為硬體和軟體之間的抽象層,它隐藏具體硬體細節而為上層提供統一的服務。

如果你隻是做應用開發,就不需要深入了解Linux Kernel層。

2、Android Rundtime

Android包含一個核心庫的集合,提供大部分在Java程式設計語言核心類庫中可用的功能。每一個Android應用程式時Dalvik虛拟機中的執行個體,運作在它們自己的程序中。Dalvik虛拟機設計成,在一個裝置可以高效運作地多個虛拟機。Dalvik虛拟機可執行檔案格式是.dex,.dex格式是專門為Dalvik設計的一種壓縮格式,适合記憶體和處理器速度有限的系統。

大多數虛拟機包括JVM都是基于棧的,而Dalvik虛拟機則是基于寄存器的。兩種架構各有優勢,一般而言,基于棧的機器需要更多指令,而基于寄存器的機器指令更大。dx是一套工具,可以将Java .class轉換為.dex格式。一個dex檔案通常會有多個.class,由于dex有時必須進行最佳化,會使檔案大小增加1-4倍,以ODEX結尾。

Dalvik虛拟機依賴于Linux提供基本功能,如線程和底層記憶體管理。

3、Application Framework

通過提供開放的開發平台,Android使開發者能夠編制很豐富的應用程式。開發者可以自由地利用裝置硬體優勢、通路位置資訊、運作背景服務、設定鬧鐘、向狀态欄添加通知等等。

(1)Activity Manager — 活動管理器

管理應用程式生命周期,提供通用的導航回退功能。

(2)Window Manager

(3)内容提供者—Content Providers

使所有應用程式能通路其他應用程式(如通訊錄)的資料,或共享自己的資料。

(4)View System — 視圖

豐富的、可擴充的視圖集合,可用于建構一個應用程式,包括清單、網格、文本框、按鈕。甚至是内嵌的網頁浏覽器。

(5)Package Manager

(6)Telephony Manager

主要提供了一系列用于通路與手機通訊相關的狀态和資訊的get方法。其中包括手機的SIM卡的狀态和資訊,電信網絡的狀态以及手機使用者的資訊。

擷取:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

(7)Resource Manager — 資料總管

提供通路非代碼資源,如本地化字元串、圖形和布局檔案。

(8)Notification Manager — 通知管理器

使所有的應用程式能夠在狀态欄顯示自定義警告。

(9)Location Manager

4、Applications

Android裝配一個核心應用程式集合,包括電子郵件用戶端、SMS程式、月曆、地圖、浏覽器、聯系人和其他設定。所有應用程式都是用Java程式設計語言寫的。

二、詳解Application Framework

1、Window Manager   [ import android.view.WindowManager ]

WindowManager是Android中一個重要的Service,是全局且唯一的。WindowManager是繼承ViewManager的。

WindowManager主要用來管理視窗的一些狀态、屬性、view增加、删除、更新、視窗順序、消息收集和處理等。Android中真正展示給使用者的是window和view,activity所起的作用主要是處理一些邏輯問題,比如生命周期管理以及建立視窗。

WindowManager中還有一個重要的靜态類LayoutParams。通過它可以設定和獲得目前視窗的一些屬性。

兩個常見應用:

(1)實作懸浮視窗

Android幾種FrameWork(Manager)的用法

(2)擷取Display中螢幕高寬

Android幾種FrameWork(Manager)的用法

(3)改變Dialog背景透明

Android幾種FrameWork(Manager)的用法

2、PackageManager

作用:擷取Android系統中應用程式的資訊,主要包括packageName, label, icon, 占用大小等。具體包括:

1)安裝、解除安裝應用查詢permission相關資訊;

2)查詢Application相關資訊(application, activity, receiver, service, provider及相關屬性等)

3)查詢已安裝應用;

4)增加、删除permission;

5)清除使用者資料、緩存、代碼段等。

幾個常見應用:

(1)擷取已安裝的應用程式的資訊

Android幾種FrameWork(Manager)的用法

(2)擷取系統中所有滿足ACTION_MAIN和CATEGORY_LAUNCHER的應用程式的包名、程式入口Activity名

Android幾種FrameWork(Manager)的用法

3、Notification Manager 

NotificationManager:該類負責狀态欄通知的管理,負責發通知、清楚通知等。

Notification:是具體的狀态欄通知對象,可以設定icon、文字、提示聲音、震動等參數。

通知需要的基本參數:

1)通知的圖示

2)通知的标題和内容

3)點選通知執行頁面跳轉 ( PendingIntent )

可選參數:

狀态欄頂部提示消息、提示音、振動、燈光等

(1)使用系統定義的通知

Android幾種FrameWork(Manager)的用法

(2)使用自定義的通知

Android幾種FrameWork(Manager)的用法