Android获得全局进程信息以及进程使用的内存情况

Android获得全部进程信息,并获得该进程使用的内存情况。

package zhangphil.process;

import java.util.List;
import android.os.Bundle;
import android.os.Debug.MemoryInfo;
import android.widget.TextView;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		TextView tv = (TextView) findViewById(R.id.textView);

		ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

		String all = "";
		try {
			List<RunningAppProcessInfo> list = activityManager
					.getRunningAppProcesses();

			for (int i = 0; i < list.size(); i++) {
				RunningAppProcessInfo p = list.get(i);

				String info = "第 " + (i + 1) + " 个进程\n";
				info += "名称:" + p.processName + "\n";
				info += "id:" + p.pid + "\n";
				info += "用户id:" + p.uid + "\n";
				// 该进程使用的内存情况,MemoryInfo单位是KB
				int[] memoryPid = new int[] { p.pid };
				MemoryInfo[] memoryInfo = activityManager
						.getProcessMemoryInfo(memoryPid);
				// 进程内存使用情况,单位:MB
				int memSize = memoryInfo[0].dalvikPrivateDirty;
				String count = "";
				if (memSize < 1024)
					count = memSize + " KB";
				else
					count = memSize / 1024 + " MB";

				info += "使用的内存(dalvikPrivateDirty): " + count + "\n";
				info += "重要级:" + p.importance + "\n";

				all = all + info + "\n";
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		tv.setText(all);
	}
}

需要在AndroidManifest.xml添加权限:

<uses-permission android:name="android.permission.GET_TASKS" />

MainActivity.java需要的activity_main.xml文件:

  <ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

         <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    </ScrollView>



时间: 2024-12-14 18:48:13

Android获得全局进程信息以及进程使用的内存情况的相关文章

浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.

其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给大家分别介绍一下这三种特殊的进程! 1.孤儿进程 如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这是子进程的父进程就是init进程(1号进程).其实还是很好理解的. #include <sys/types.h> #include <unistd.h> #inclu

菜鸟随笔(3)---三种进程学习.孤儿进程.僵尸进程.守护进程

一只菜鸟横空出世,码农世界闯一闯,每天进展多一丢丢. 三种进程学习.孤儿进程.僵尸进程.守护进程 转自https://blog.csdn.net/believe_s/article/details/77040494 1.孤儿进程 如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这里子进程的父进程就是init进程(1号进程).其实还是很好理解的. // 父进程先子进程退出 // 子进程会被祖父进程接手并在后台运行,执行内部的代码 int main() { pid_t pid =

查看android进程信息

打开adb shell,直接ps命令 如果查看某特定进程,比如<圣火英雄传>,用grep过滤 各列参数意义: USER        进程当前用户: PID             Process ID,进程ID: PPID          Process Parent ID,进程的父进程ID: VSIZE        Virtual Size,进程的虚拟内存大小: RSS           Resident Set Size,实际驻留"在内存中"的内存大小: WCH

Android Framework学习(一)之init进程解析

init进程是Android系统中用户空间的第一个进程,它被赋予了很多极其重要的工作职责,init进程相关源码位于system/core/init,本篇博客我们就一起来学习init进程(基于Android 7.0). init入口函数分析 init的入口函数为main,位于system/core/init/init.cpp int main(int argc, char** argv) { if (!strcmp(basename(argv[0]), "ueventd")) { ret

Android应用程序在新的进程中启动新的Activity的方法和过程分析

Android应用程序在新的进程中启动新的Activity的方法和过程分析 - 老罗的Android之旅 - 博客频道 - CSDN.NET ? ? ? ?前面我们在分析Activity启动过程的时候,看到同一个应用程序的Activity一般都是在同一个进程中启动,事实上,Activity也可以像Service一样在新的进程中启动,这样,一个应用程序就可以跨越好几个进程了,本文就分析一下在新的进程中启动Activity的方法和过程. ?? ? ? ?在前面Android进程间通信(IPC)机制B

Android中获取CPU负载和进程cpu时间

android系统中有一个ProcessStats类,我们可以使用它来获取系统的负载情况及进程时间. 实现原理是读取/proc目录下的.linux系统运行时,内核会去更新 /proc目录下的文件,将PID的运行情况写入相应的文件中.我们主要关注以下文件 1. /proc/stat 该文件包含了从系统启动开始累积到当前时刻的CPU活动信息. 看下我手机的情况,如下 cat /proc/stat cpu  14869 5121 19794 156065 3114 0 26 0 0 0 cpu0 10

Android学习笔记—第五章 进程与线程

第五章 进程与线程 进程:一个应用程序就是一个进程 (1)进程的优先级: Foreground Process 前台进程 a. 当前用户正在操作的Activity所在的进程 b. 绑定了当前用户操作的Activity的service所在的进程 c. 通过调用了startForeground()方法提升优先级的service所在的进程 d. 正在调用onCreate().onStart().onDestory()方法的service所在的进程 e. 正在调用onReceiver()方法的Broad

72获取内存信息(运行的进程数,可用的总内存,剩余内存)&amp;&amp;获取可用的总内存的BUG的解决

获取内存信息(运行的进程数,可用的总内存,剩余内存)属于系统的工具方法了,开始的工具方法是这样的: package com.ustc.mobilemanager.utils; import java.util.List; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo; import android.app.ActivityManager.RunningAppProcessInfo

【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息

如何仅使用一条ps命令便能获取到所有与RAC集群进程相关的信息.  从所使用的命令角度上看很简单,仅需使用ps命令结合grep命令便能实现.问题关键是需要确定检索哪些关键字. 1.与RAC集群有关的进程1)常驻系统的通用进程ocssd.binevmd.binevmlogger.bincrsd.bin 这些通用进程需要在各种平台和数据库版本上都会启动. 2)特有进程oprocd: 在UNIX平台当第三方集群软件为运行时会启动该进程:在Linux平台上会在Oracle 10.2.0.4这个版本上启动