1. 获取pid
int pid = android.os.Process.myPid();
2. 获取进程名及其他信息
ActivityManager mActivityManager = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager
.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
procName = appProcess.processName;
}
}
appProcess中可以获取一些进程相关的信息,如:
/**
* The name of the process that this object is associated with
*/
public String processName;
/**
* The pid of this process; 0 if none
*/
public int pid;
/**
* The user id of this process.
*/
public int uid;
/**
* All packages that have been loaded into the process.
*/
public String pkgList[];
/**
* Flags of information. May be any of
* {@link #FLAG_CANT_SAVE_STATE}.
* @hide
*/
public int flags;
/**
* Last memory trim level reported to the process: corresponds to
* the values supplied to {@link android.content.ComponentCallbacks2#onTrimMemory(int)
* ComponentCallbacks2.onTrimMemory(int)}.
*/
public int lastTrimLevel;
/**
* The relative importance level that the system places on this
* process. May be one of {@link #IMPORTANCE_FOREGROUND},
* {@link #IMPORTANCE_VISIBLE}, {@link #IMPORTANCE_SERVICE},
* {@link #IMPORTANCE_BACKGROUND}, or {@link #IMPORTANCE_EMPTY}. These
* constants are numbered so that "more important" values are always
* smaller than "less important" values.
*/
public int importance;
/**
* An additional ordering within a particular {@link #importance}
* category, providing finer-grained information about the relative
* utility of processes within a category. This number means nothing
* except that a smaller values are more recently used (and thus
* more important). Currently an LRU value is only maintained for
* the {@link #IMPORTANCE_BACKGROUND} category, though others may
* be maintained in the future.
*/
public int lru;
/**
* The reason for {@link #importance}, if any.
*/
public int importanceReasonCode;
/**
* For the specified values of {@link #importanceReasonCode}, this
* is the process ID of the other process that is a client of this
* process. This will be 0 if no other process is using this one.
*/
public int importanceReasonPid;
/**
* For the specified values of {@link #importanceReasonCode}, this
* is the name of the component that is being used in this process.
*/
public ComponentName importanceReasonComponent;
/**
* When {@link #importanceReasonPid} is non-0, this is the importance
* of the other pid. @hide
*/
public int importanceReasonImportance;
/**
* Current process state, as per PROCESS_STATE_* constants.
* @hide
*/
public int processState;
3. 其他
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(info);
MLog.i(TAG, "系统剩余内存:" + (info.availMem >> 20) + "MB");
MLog.i(TAG, "系统总内存:" + (info.totalMem >> 20)+"MB");
MLog.i(TAG, "系统是否处于低内存运行:" +info.lowMemory);
MLog.i(TAG, "当系统剩余内存低于" + (info.threshold >> 20) + "MB时就看成低内存运行");
Runtime rt = Runtime.getRuntime();
MLog.d(TAG, "Available heap " + (rt.freeMemory() >> 20) + "MB");
MLog.d(TAG, "MAX heap " + (rt.maxMemory() >> 20) + "MB");
MLog.d(TAG, "totle heap " + (rt.totalMemory() >> 20) + "MB");