Android编程实现任务管理器的方法_Android

本文实例讲述了Android编程实现任务管理器的方法。分享给大家供大家参考,具体如下:
任务管理器可以实现的功能有:

1.查看当前系统下运行的所有的进程
2.可以查看每个进程的进程号、版本号以及内存占用情况
3.杀死进程(可以杀死全部进程或者杀死指定的进程)
4.查看系统剩余内存

效果图:

杀死全部进程

实现思路:

ActivityManager类可以获取到当前系统的所有进程,以及每个进程的信息,也可以杀死某个进程,
ActivityManager.getRunningAppProcesses();   获取系统的所有进程
ActivityManager.getProcessMemoryInfo(pids);  根据进程号获取每个进程的内存占用情况
ActivityManager.restartPackage(processName) ;  根据进程的包名杀死某个进程
PackageManager可以根据包名获取程序的图标、版本号、名字、权限、签名

核心代码:

/*
 * 获取所有进程及用户 的进程
 */
protected void initData() {
  runningAppProcessInfos =ActivityManager.getRunningAppProcesses(); //获取所有的进程
  userRunningAppProcessInfos = new ArrayList<ActivityManager.RunningAppProcessInfo>();//获取用户的进程
  for(int i = 0; i< runningAppProcessInfos.size();i++){
     if("system".equals(runningAppProcessInfos.get(i).processName)
    ||"android.process.media".equals(runningAppProcessInfos.get(i).processName)
    ||"android.process.acore".equals(runningAppProcessInfos.get(i).processName)
    ){
       continue;
     }
     userRunningAppProcessInfos.add(runningAppProcessInfos.get(i));
  }
}

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

/*
 * 获取某个进程占用的内存信息
 */
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");
public class TaskInfo {
  Context context ;
  PackageManager pm ;
  public TaskInfo(Context context) {
    this.context = context;
    pm = context.getPackageManager();
  }
  /*
   * 根据包名 查询 图标
   */
  public Drawable getAppIcon(String packname){
   try {
       ApplicationInfo info = pm.getApplicationInfo(packname, 0);
       return info.loadIcon(pm);
    } catch (NameNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return null;
    }
  }
  /*
   *获取程序的版本号
   */
  public String getAppVersion(String packname){
     try {
       PackageInfo packinfo =  pm.getPackageInfo(packname, 0);
       return packinfo.versionName;
      } catch (NameNotFoundException e) {
        e.printStackTrace();
        return null;
      }
  }
  /*
   * 获取程序的名字
   */
  public String getAppName(String packname){
     try {
         ApplicationInfo info = pm.getApplicationInfo(packname, 0);
         return info.loadLabel(pm).toString();
      } catch (NameNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
      }
  }
  /*
   * 获取程序的权限
   */
  public String[] getAppPremission(String packname){
     try {
       PackageInfo packinfo =  pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS);
       //获取到所有的权限
       return packinfo.requestedPermissions;
      } catch (NameNotFoundException e) {
        e.printStackTrace();
        return null;
      }
  }
  /*
   * 获取程序的签名
   */
  public String getAppSignature(String packname){
     try {
       PackageInfo packinfo =  pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);
       //获取到所有的权限
       return packinfo.signatures[0].toCharsString();
      } catch (NameNotFoundException e) {
        e.printStackTrace();
        return null;
      }
  }
}
/*
 * 杀死所有进程
 */
private void killAll() {
  for (int i = 0 ; i< userRunningAppProcessInfos.size();i++){
    System.out.println(userRunningAppProcessInfos.get(i).processName);
    activitymanager.restartPackage(userRunningAppProcessInfos.get(i).processName);
  }
  // 更新显示的界面
  pd.show();
  new Thread(){
    @Override
    public void run() {
      initData();
      Message msg = new Message();
      msg.what = GET_RUNNING_APP_FINISH;
      hander.sendMessage(msg);
    }
  }.start();
}
/*
 * 杀死选择的进程
 */
private void killSelected() {
  for (int i=0 ;i < isselected.size(); i++){
    if(isselected.get(i)){  //如果用户也选中则返回true
      //终止一个activity 需要用到 activitymanager
      activitymanager.restartPackage(userRunningAppProcessInfos.get(i).processName);
    }
  }
  //更新listview的显示
  pd.show();
  new Thread(){
    @Override
    public void run() {
      initData();
      Message msg = new Message();
      msg.what = GET_RUNNING_APP_FINISH;
      hander.sendMessage(msg);
    }
  }.start();
}
/*
 * 获取系统的剩余内存
 */
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo outInfo =  new ActivityManager.MemoryInfo();
am.getMemoryInfo(outInfo);
long availMemorySize = outInfo.availMem;
String strMemorySize = availMemorySize/1024/1024 + "MB";

希望本文所述对大家Android程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 任务管理器
Android任务管理器
android 实现接口方法、java实现任务管理器、c 实现任务管理器、android 任务管理器、android5.0任务管理器,以便于您获取更多的相关知识。

时间: 2024-11-08 20:13:29

Android编程实现任务管理器的方法_Android的相关文章

Android编程实现任务管理器的方法

本文实例讲述了Android编程实现任务管理器的方法.分享给大家供大家参考,具体如下: 任务管理器可以实现的功能有: 1.查看当前系统下运行的所有的进程 2.可以查看每个进程的进程号.版本号以及内存占用情况 3.杀死进程(可以杀死全部进程或者杀死指定的进程) 4.查看系统剩余内存 效果图: 杀死全部进程 实现思路: ActivityManager类可以获取到当前系统的所有进程,以及每个进程的信息,也可以杀死某个进程, ActivityManager.getRunningAppProcesses(

Android编程动态按钮实现方法_Android

本文实例讲述了Android编程动态按钮实现方法.分享给大家供大家参考,具体如下: 第一种: 该方法通过onTouch来实现, btn3 = (ImageButton) findViewById(R.id.ImageButton03); btn3.setOnTouchListener(touchListener3); View.OnTouchListener touchListener = new OnTouchListener() { @Override public boolean onTo

Android编程之语音识别实现方法_Android

本文实例讲述了Android编程之语音识别实现方法.分享给大家供大家参考,具体如下: 语音识别技术在手机上应用得相当广泛,人类日常最频繁的沟通方式是语音,而在手机应用中,大部分是通过硬件手动输入,目前这依然是主要与手机互动的方式.但是随着手机软硬件功能的不断提升,可以预见在不久的将来,语音交流将是人机交互的主要方式.IPhone手机内置的Siri语音助手就是一个很好的例子.而鲜为人知的是其使用的语音识别技术来自于Google.而想而知,作为Google力推的Android自然被植入了最核心的语音

Android编程之菜单实现方法_Android

本文实例讲述了Android编程之菜单实现方法.分享给大家供大家参考,具体如下: 菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机都要有一个"menu"键,即菜单键,由此可见菜单在Android程序中的重要与特殊,其中Android的SDK提供了三种类型:分别为options menu(常规菜单),context menu(上下文菜单)和submenu(子菜单).其中options menu是通过按Menu键来显示,context menu

Android编程之九宫格实现方法实例分析_Android

本文实例讲述了Android编程之九宫格实现方法.分享给大家供大家参考,具体如下: 显示九宫格需要用GridView , 要显示每个格子中的视图有两种方式,第一种方式是做成xml文件,再将xml文件做成视图.第二种方式就是在代码中构建出这样一种布局,这里采用第一种方式来实现: GridView: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="ht

Android编程操作联系人的方法(查询,获取,添加等)_Android

本文实例讲述了Android编程操作联系人的方法.分享给大家供大家参考,具体如下: Android系统中的联系人也是通过ContentProvider来对外提供数据的,我们这里实现获取所有联系人.通过电话号码获取联系人.添加联系人.使用事务添加联系人. 获取所有联系人 1. Android系统中的联系人也是通过ContentProvider来对外提供数据的 2. 数据库路径为:/data/data/com.android.providers.contacts/database/contacts2

Android编程操作联系人的方法(查询,获取,添加等)

本文实例讲述了Android编程操作联系人的方法.分享给大家供大家参考,具体如下: Android系统中的联系人也是通过ContentProvider来对外提供数据的,我们这里实现获取所有联系人.通过电话号码获取联系人.添加联系人.使用事务添加联系人. 获取所有联系人 1. Android系统中的联系人也是通过ContentProvider来对外提供数据的 2. 数据库路径为:/data/data/com.android.providers.contacts/database/contacts2

Android编程之九宫格实现方法实例分析

本文实例讲述了Android编程之九宫格实现方法.分享给大家供大家参考,具体如下: 显示九宫格需要用GridView , 要显示每个格子中的视图有两种方式,第一种方式是做成xml文件,再将xml文件做成视图.第二种方式就是在代码中构建出这样一种布局,这里采用第一种方式来实现: GridView: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="ht

Android编程之菜单实现方法

本文实例讲述了Android编程之菜单实现方法.分享给大家供大家参考,具体如下: 菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机都要有一个"menu"键,即菜单键,由此可见菜单在Android程序中的重要与特殊,其中Android的SDK提供了三种类型:分别为options menu(常规菜单),context menu(上下文菜单)和submenu(子菜单).其中options menu是通过按Menu键来显示,context menu