/android/archive/2011/11/4/android-task-manager.html

如何在Android中实现任务管理器

今天,我们来实现一个Android任务管理器,来简单管理Android系统中运行的程序进程,包括查看进程、杀死进程以及内存资源的查看,下面就一起看看这个任务管理器是如何实现的吧。

任务管理器可以实现的功能有:

1.查看当前系统下运行的所有的进程

2.可以查看每个进程的进程号、版本号以及内存占用情况

3.杀死进程(可以杀死全部进程或者杀死指定的进程)

4.查看系统剩余内存

效果图:????????????????????????????????????????????????????????????????????????? 杀死全部进程

??????

实现思路:

ActivityManager类可以获取到当前系统的所有进程,以及每个进程的信息,也可以杀死某个进程,

ActivityManager.getRunningAppProcesses(); ? 获取系统的所有进程

ActivityManager.getProcessMemoryInfo(pids); ?根据进程号获取每个进程的内存占用情况

ActivityManager.restartPackage(processName) ; ?根据进程的包名杀死某个进程

PackageManager可以根据包名获取程序的图标、版本号、名字、权限、签名

核心代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16/*

?* 获取所有进程及用户 的进程

?*/

protected void initData() {

????runningAppProcessInfos =ActivityManager.getRunningAppProcesses(); //获取所有的进程

????userRunningAppProcessInfos = new ArrayList();//获取用户的进程

????for(int i = 0; i< runningAppProcessInfos.size();i++){

?????????if("system".equals(runningAppProcessInfos.get(i).processName)

????????||"cess.media".equals(runningAppProcessInfos.get(i).processName)

????????||"cess.acore".equals(runningAppProcessInfos.get(i).processName)

????????){

?????????????continue;

?????????}

?????????userRunningAppProcessInfos.add(runningAppProcessInfos.get(i));

????}

}注:杀死全部进程实际上杀死的是用户的所有进程,系统进程是无法杀死的,所以这里要获取到用户的所有的进程。

1

2

3

4

5

6

7

8/*

?* 获取某个进程占用的内存信息

?*/

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

int[] pids = {userRunningAppProcessInfos.get(position).pid};

android.os.Debug.MemoryInfo[] memoryInfos =? am.getProcessMemoryInfo(pids);

int memorysize = memoryInfos[0].getTotalPrivateDirty();

tv_app_memory.setText("内存占用为 "+ memorysize +" KB");1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80public class TaskInfo {

????Context contex

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐