編輯:關於Android編程
在之前寫過2篇關於ActivityManager的文章,如下所示。都是通過實戰去了解裡面的信息,現在感覺太繁瑣,所以做一個api介紹比較詳細。就像之前學習Telephony那樣,對整體了解整個ActivityManager很有用。
android.app包,含有6個內部類:
MemoryInfoProcessErrorStateInfoRecentTaskInfoRunningAppProcessInfoRunningServiceInfoRunningTaskInfo
先從ActivityManager API下手。
主activity中的
對於用戶策動的活動,當前activity不會收到提示
將後面的任務立即移動到前面
提供一份不包含任何當前任務的列表,這些任務對於用戶是不可見的
返回所有的任務
清楚用戶數據
獲取相應包名對應的apk的各種狀態信息
獲取設備配置信息
當一個應用程序在一個大的堆棧空間裡運行時,估算當前設備中每一個應用內存片段的值
Lancher啟動器的圖標像素密度
啟動器圖標大小
當前設備每個應用的內存分類,就是內存的底線。低於這個值應用就會崩潰。
當前系統的內存信息
返回調用者進程的全局內存狀態信息。
進程所使用的內存信息
當系統發生錯誤的時候,獲取當前運行的一些進程的信息
用戶啟動的任務列表
當前設備運行著的應用進程信息
返回一個PendingIntent,該PendingIntent會啟動一個控制面板,裡面會顯示當前系統運行的一系列服務。
當前運行的服務信息
當前系統運行的任務信息
是否是低內存的設備
判斷設備是否運行在測試框架中
判斷當前設備是否被Monkey亂點中
殺死對應包的後台進程
講給定的id對應的任務移動到任務棧隊列的最前面。
在API 8中已廢除
Nested class
通過getMemoryInfo(ActivityManager.MemoryInfo)獲得該對象,可以用來檢索有效的內存信息
系統中的可見內存
系統判斷自己是否處於低內存的情況
當內存太低,開始殺死後台服務和其他非外來的進程時,內存的臨界值
內核中所有內存數
在發生錯誤時,檢索內存中的有關信息
int CRASHED:奔潰
int NOT_RESPONDING:無回應
int NO_ERROR:0.狀況碼,無錯誤
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
用戶最近訪問和啟動的任務信息
public Intent baseIntent:啟動任務的原始Intent,可以用它重啟任務或者將當前任務移動到任務列表的最前面
public CharSequence description:描述任務上次的狀態
public int id:唯一標識當前運行的任務
public ComponentName origActivity:intent啟動的實體控件
public int persistentId:任務的永久id號,不管該任務有沒有運行
與正在運行的進程有關信息可以通過該類獲得。
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:同上。無特殊原因
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
當前系統中運行的特殊服務
FLAG_FOREGROUND:前台進程
FLAG_PERSISTENT_PROCESS:持續進程
FLAG_STARTED:已啟動
FLAG_SYSTEM_PROCESS:核心系統進程
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
當前在系統中運行的特定任務信息,這些任務不是意味著有進程活動的任務,而是簡單的標識用戶已經離開該任務,但是沒有關閉,但是當前系統可能會殺死該進程,只支持它的狀態,等用戶返回後重新啟動。
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所管理的內容有了初步的了解。
Android自帶的Email從6.3開始不支持exchange了,用了那麼久,突然不支持了還真是不習慣。市場上也沒有比較好的替代軟件,心想從網上搜一下能不
一、猜想數據存放路徑微信現在是老少皆宜,大街小巷都在使用,已經替代了傳統的短信聊天方式了,只要涉及到聊天就肯定有隱私消息,那麼本文就來講解如何獲取微信的聊天記錄以及通訊錄
游戲中攝像頭的原理介紹 在游戲開發中更新攝像頭的位置可以決定屏幕顯示的內容,尤其是RPG類游戲攝像頭有著非常重要的作用,我
Android實戰打飛機游戲子彈生成,新建子彈類public class Bullet { // 子彈圖片資源 public Bitmap bmpBullet; // 子