博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用ActivityManager实现进程管理
阅读量:5953 次
发布时间:2019-06-19

本文共 5010 字,大约阅读时间需要 16 分钟。

Android中使用ActivityManager可以获得进程信息,并对进程进行管理,如结束进程等。本文使用ActivityManager获得进程列表,并结束选中的进程。 

首先,看看布局文件。

然后是Java文件。

package com.hzhi.sysinfor;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.ActivityManager;import android.app.AlertDialog;import android.app.ListActivity;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Bundle;import android.os.Debug;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public class process extends ListActivity{		Button btn_stop;	PackageManager pkg_man;	list_pro list_ada;	ActivityManager am;		// 获得所有的进程列表	public void get_pro(){ 				list_ada = new list_pro(this);        		// 包管理器		am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);		// 获取手机内所有应用		List
pi = am.getRunningAppProcesses(); for (int i=0; i
list_data; public list_pro(Context context){ ctx = context; list_data = new ArrayList
(); } @Override public int getCount() { // TODO Auto-generated method stub return list_data.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return list_data.get(arg0); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return list_data.indexOf(arg0); } @Override public View getView(int position, View convertView, ViewGroup parent) { item_pro my_item; Integer i = 0; if (convertView == null) { my_item = new item_pro(ctx, (String)list_data.get(position).txt_no.getText(), (String)list_data.get(position).txt_name.getText(), (String)list_data.get(position).txt_size.getText(), list_data.get(position).is_chk); } else { my_item = (item_pro)convertView; my_item.txt_no.setText(list_data.get(position).txt_no.getText()); my_item.txt_name.setText(list_data.get(position).txt_name.getText()); my_item.txt_size.setText(list_data.get(position).txt_size.getText()); } CheckBox chk_item = (CheckBox) my_item.chk_pro; chk_item.setOnClickListener(this); chk_item.setChecked(list_data.get(position).is_chk); chk_item.setTag(position); return my_item; } public void addItem(String txt_no, String txt_name, String str_size, Boolean bol_chk) { list_data.add(new item_pro(ctx,txt_no,txt_name,str_size,bol_chk)); } @Override public void onClick(View v) { // TODO Auto-generated method stub CheckBox c = (CheckBox) v; int pos = Integer.parseInt(v.getTag().toString()); list_data.get(pos).is_chk = c.isChecked(); } }// pro列表的一行class item_pro extends LinearLayout{ public CheckBox chk_pro; // 进程号 public TextView txt_no; // 进程名 public TextView txt_name; // 占用内存大小 public TextView txt_size; // 是否选中 public boolean is_chk; public item_pro(Context ctx, String str_no, String str_name, String str_size, Boolean bol_chk) { super(ctx); this.setOrientation(HORIZONTAL); int hei = 80; chk_pro = new CheckBox(ctx); addView(chk_pro, new LinearLayout.LayoutParams((int)(MainActivity.wid_scr*0.2),hei)); txt_no = new TextView(ctx); txt_no.setText(str_no); addView(txt_no, new LinearLayout.LayoutParams((int)(MainActivity.wid_scr*0.2),hei)); txt_name = new TextView(ctx); txt_name.setText(str_name); addView(txt_name, new LinearLayout.LayoutParams((int)(MainActivity.wid_scr*0.4),hei)); txt_size = new TextView(ctx); txt_size.setText(str_size); addView(txt_size, new LinearLayout.LayoutParams((int)(MainActivity.wid_scr*0.2),hei)); is_chk = bol_chk; }}

Java文件实现了三个类。process类是整个Activity的类,list_pro是适配器类,item_pro是列表里面的一行。

在process类的get_pro()方法里面,语句am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)获得了一个ActivityManager,List<ActivityManager.RunningAppProcessInfo> pi = am.getRunningAppProcesses()获得了系统的所有进程,并存储在列表pi里面。语句ActivityManager.RunningAppProcessInfo pii = (ActivityManager.RunningAppProcessInfo) pi.get(i)获得了每一个进程信息,pii.processName是该进程的进程名(通常是该进程对应的包名),mi[0].dalvikPrivateDirty是该进程占用的内存大小(通常以KB为单位)。在unload (String n)方法里面,am.killBackgroundProcesses(n)结束了进程名为n的进程,不过要在AndroidManifest.xml中加入android.permission.KILL_BACKGROUND_PROCESSES权限,否则会出现权限错误。 

运行效果如下。

需要注意的是,系统进程是不能结束的。

转载地址:http://cgaxx.baihongyu.com/

你可能感兴趣的文章
PCA
查看>>
ajax上传文件
查看>>
java中通过绝对路径将图片存入数据库
查看>>
简要记录浮点型数据的二进制存储格式
查看>>
ConcurrentHashMap(Java8)源码分析
查看>>
Python文件处理之文件指针(四)
查看>>
Numpy用法详解
查看>>
DataGridView在vb.net中的操作技巧
查看>>
PMP考试冲刺进行中。。。
查看>>
大换血的代价
查看>>
Learn in FCC(3)
查看>>
RunLoop--
查看>>
chrome 2行换行省略号 ... text-ellipse
查看>>
C语言第四次作业
查看>>
Java学习-集合的理解
查看>>
iOS验证码倒计时(GCD实现)
查看>>
iOS中的过滤器和正则表达式(NSPredicate,NSRegularExpression)
查看>>
canvas和svg
查看>>
结对:复利美化版
查看>>
HDU_2689_Sort it
查看>>