Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中ActivityManager學習筆記(3)

Android中ActivityManager學習筆記(3)

編輯:關於Android編程

在之前寫過2篇關於ActivityManager的文章,如下所示。都是通過實戰去了解裡面的信息,現在感覺太繁瑣,所以做一個api介紹比較詳細。就像之前學習Telephony那樣,對整體了解整個ActivityManager很有用。

 

 

ActivityManager

 

android.app包,含有6個內部類:

MemoryInfoProcessErrorStateInfoRecentTaskInfoRunningAppProcessInfoRunningServiceInfoRunningTaskInfo

 

先從ActivityManager API下手。

 

Constants

 

META_HOME_ALTERNATE

主activity中的標簽值

MOVE_TASK_NO_USER_ACTION

對於用戶策動的活動,當前activity不會收到提示

MOVE_TASK_WITH_HOME

將後面的任務立即移動到前面

RECENT_IGNORE_UNAVAILABLE

提供一份不包含任何當前任務的列表,這些任務對於用戶是不可見的

RECENT_WITH_EXCLUDED

返回所有的任務

 

Methods

 

 

public boolean clearApplicationUserData ()

 

 

清楚用戶數據

 

 

public void dumpPackageState (FileDescriptor fd, String packageName)


 

獲取相應包名對應的apk的各種狀態信息

 

 

public ConfigurationInfo getDeviceConfigurationInfo ()

 

 

獲取設備配置信息

 

 

public int getLargeMemoryClass ()

 

 

當一個應用程序在一個大的堆棧空間裡運行時,估算當前設備中每一個應用內存片段的值

 

 

public int getLauncherLargeIconDensity ()

 

 

Lancher啟動器的圖標像素密度

 

 

public int getLauncherLargeIconSize ()

 

 

啟動器圖標大小

 

 

public int getLauncherLargeIconSize ()

 

 

當前設備每個應用的內存分類,就是內存的底線。低於這個值應用就會崩潰。

 

 

public void getMemoryInfo (ActivityManager.MemoryInfo outInfo)

 

 

當前系統的內存信息

 

 

public static void getMyMemoryState (ActivityManager.RunningAppProcessInfo outState)

 

 

返回調用者進程的全局內存狀態信息。

 

 

public MemoryInfo[] getProcessMemoryInfo (int[] pids)

 

 

進程所使用的內存信息

 

 

public List getProcessesInErrorState ()

 

 

當系統發生錯誤的時候,獲取當前運行的一些進程的信息

 

 

public List getRecentTasks (int maxNum, int flags)

 

 

用戶啟動的任務列表

 

 

public List getRunningAppProcesses ()

 

 

當前設備運行著的應用進程信息

 

 

public PendingIntent getRunningServiceControlPanel (ComponentName service)

 

 

返回一個PendingIntent,該PendingIntent會啟動一個控制面板,裡面會顯示當前系統運行的一系列服務。

 

 

public List getRunningServices (int maxNum)

 

 

當前運行的服務信息

 

 

public List getRunningTasks (int maxNum)

 

 

當前系統運行的任務信息

 

 

public boolean isLowRamDevice ()

 

 

是否是低內存的設備

 

 

public static boolean isRunningInTestHarness ()

 

 

判斷設備是否運行在測試框架中

 

 

public static boolean isUserAMonkey ()

 

 

判斷當前設備是否被Monkey亂點中

 

 

public void killBackgroundProcesses (String packageName)

 

 

殺死對應包的後台進程

 

 

public void moveTaskToFront (int taskId, int flags, Bundle options)

 

 

public void moveTaskToFront (int taskId, int flags)


 

講給定的id對應的任務移動到任務棧隊列的最前面。

 

 

public void restartPackage (String packageName)

 

 

在API 8中已廢除

 

Nested class

 

MemoryInfo

 

通過getMemoryInfo(ActivityManager.MemoryInfo)獲得該對象,可以用來檢索有效的內存信息

 

Fields

public long availMem

 

系統中的可見內存

 

public boolean lowMemory

 

系統判斷自己是否處於低內存的情況

 

public long threshold

 

當內存太低,開始殺死後台服務和其他非外來的進程時,內存的臨界值

 

public long totalMem

 

內核中所有內存數

 

ProcessErrorStateInfo

 

在發生錯誤時,檢索內存中的有關信息

 

Constans:

 

int CRASHED:奔潰

int NOT_RESPONDING:無回應

int NO_ERROR:0.狀況碼,無錯誤

 

Fields

 

public int condition:進程中的狀態碼

public byte[] crashData:(已經被棄用),空值

public String longMsg:一個表述錯誤狀態的長信息

pubic int pid:進程id

pubic String processName:發生錯誤或奔潰的進程的進程名稱

public String shortMsg:錯誤碼的縮寫

public String stackTrace:錯誤發生時的堆棧跟蹤信息

public String tag:與錯誤有關的activity名

public int uid:用戶id

 

RecentTaskInfo

 

用戶最近訪問和啟動的任務信息

 

Fields

 

public Intent baseIntent:啟動任務的原始Intent,可以用它重啟任務或者將當前任務移動到任務列表的最前面

public CharSequence description:描述任務上次的狀態

public int id:唯一標識當前運行的任務

public ComponentName origActivity:intent啟動的實體控件

public int persistentId:任務的永久id號,不管該任務有沒有運行

 

RunningAppProcess

 

與正在運行的進程有關信息可以通過該類獲得。

 

Constants

 

 

IMPORTANCE_BACKGROUND:importance變量的值之一。處於後台,但是仍然消耗資源的進程

IMPORTANCE_EMPT:importance變量的值之一。空進程

IMPORTANCE_FOREGROUND:importance變量的值之一。處於用戶界面的進程。

IMPORTANCE_PERCEPTIBLE:同上。仍然運行著某些對用戶有用的的東西

IMPORTANCE_SERVICE:同上。該進程包含仍在運行的服務

IMPORTANCE_VISIBLE:同上。運行某些對用戶可見的東西,但不是立即顯示在UI界面上,

REASON_PROVIDER_IN_USE:importanceReasonCode變量的值之一。應用的content provider中正被其他進程調用

REASON_SERVICE_IN_USE:同上。

REASON_UNKNOWN:同上。無特殊原因

 

Fields

 

public int importance:重要性等級

public int importanceReasonCode:重要原因code

public ComponentName importanceReasonComponent:到當前進程中使用的組件名

public int importanceReasonPid:進程客戶端其他進程的進程id。

public int lastTrimLevel:報告給進程最後內存的等級

public int lru:近期最少使用算法,即為importance進行排序。

public int pid:進程id

public String[] pkgList:該進程加載的所有包名

public String processName:與當前對象相關的進程名稱

public int uid:用戶id

 

RunningServiceInfo

 

當前系統中運行的特殊服務

 

Constants

 

FLAG_FOREGROUND:前台進程

FLAG_PERSISTENT_PROCESS:持續進程

FLAG_STARTED:已啟動

FLAG_SYSTEM_PROCESS:核心系統進程

 

Fields

 

public long activeSince:第一次啟動的時間

public int clientCount:連接到該服務的客戶端數量

public int clientLabel:客戶端標簽

public String clientPackage:客戶端包名

public int crashCount:在服務運行過程中奔潰的次數

public int flags:運行標志

public boolean foreground:判斷是否位於前端UI界面上

public long lastActivityTime:最後的活動時間

public int pid:進程id

public String process:服務所在的進程名

public long restarting:重新啟動的時間,如果非空,代表該服務當前不在運行。等待一段時間後重啟。

public ComponentName service:服務組件

public boolean started:是否已經啟動

public int uid:用戶id

 

RunningTaskInfo

 

當前在系統中運行的特定任務信息,這些任務不是意味著有進程活動的任務,而是簡單的標識用戶已經離開該任務,但是沒有關閉,但是當前系統可能會殺死該進程,只支持它的狀態,等用戶返回後重新啟動。

 

Fields

 

public ComponentName baseActivity:任務中第一次啟動的activity.

public CharSquence description:任務當前狀態的描述

public int id:任務id

public int numActivities:當前任務中活躍的activity數

public in numRunning:當前任務中運行的activity數(沒有停止和持續的activity)

public Bitmap thumbnail:當前狀態的縮略圖

public ComponentName topActivity:任務歷史棧最上層的activity.

 

 

總結

 

這一篇文章從ActivityManager講起,逐漸講解了其中的6個內部類,代表程序運行過程中所涉及到的各個進程、app、service、task的信息。對ActivityManager所管理的內容有了初步的了解。

 

 

 

 

 

 

 

 

 



 


 

 


 

 


 


 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved