国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android編程實(shí)現(xiàn)任務(wù)管理器的方法

2020-04-11 11:05:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Android編程實(shí)現(xiàn)任務(wù)管理器的方法。分享給大家供大家參考,具體如下:
任務(wù)管理器可以實(shí)現(xiàn)的功能有:

1.查看當(dāng)前系統(tǒng)下運(yùn)行的所有的進(jìn)程
2.可以查看每個(gè)進(jìn)程的進(jìn)程號(hào)、版本號(hào)以及內(nèi)存占用情況
3.殺死進(jìn)程(可以殺死全部進(jìn)程或者殺死指定的進(jìn)程)
4.查看系統(tǒng)剩余內(nèi)存

效果圖:

殺死全部進(jìn)程

實(shí)現(xiàn)思路:

ActivityManager類可以獲取到當(dāng)前系統(tǒng)的所有進(jìn)程,以及每個(gè)進(jìn)程的信息,也可以殺死某個(gè)進(jìn)程,
ActivityManager.getRunningAppProcesses();   獲取系統(tǒng)的所有進(jìn)程
ActivityManager.getProcessMemoryInfo(pids);  根據(jù)進(jìn)程號(hào)獲取每個(gè)進(jìn)程的內(nèi)存占用情況
ActivityManager.restartPackage(processName) ;  根據(jù)進(jìn)程的包名殺死某個(gè)進(jìn)程
PackageManager可以根據(jù)包名獲取程序的圖標(biāo)、版本號(hào)、名字、權(quán)限、簽名

核心代碼:

/* * 獲取所有進(jìn)程及用戶 的進(jìn)程 */protected void initData() {  runningAppProcessInfos =ActivityManager.getRunningAppProcesses(); //獲取所有的進(jìn)程  userRunningAppProcessInfos = new ArrayList<ActivityManager.RunningAppProcessInfo>();//獲取用戶的進(jìn)程  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));  }}

注:殺死全部進(jìn)程實(shí)際上殺死的是用戶的所有進(jìn)程,系統(tǒng)進(jìn)程是無(wú)法殺死的,所以這里要獲取到用戶的所有的進(jìn)程。

/* * 獲取某個(gè)進(jìn)程占用的內(nè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("內(nèi)存占用為 "+ memorysize +" KB");
public class TaskInfo {  Context context ;  PackageManager pm ;  public TaskInfo(Context context) {    this.context = context;    pm = context.getPackageManager();  }  /*   * 根據(jù)包名 查詢 圖標(biāo)   */  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;    }  }  /*   *獲取程序的版本號(hào)   */  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;      }  }  /*   * 獲取程序的權(quán)限   */  public String[] getAppPremission(String packname){     try {       PackageInfo packinfo =  pm.getPackageInfo(packname, PackageManager.GET_PERMISSIONS);       //獲取到所有的權(quán)限       return packinfo.requestedPermissions;      } catch (NameNotFoundException e) {        e.printStackTrace();        return null;      }  }  /*   * 獲取程序的簽名   */  public String getAppSignature(String packname){     try {       PackageInfo packinfo =  pm.getPackageInfo(packname, PackageManager.GET_SIGNATURES);       //獲取到所有的權(quán)限       return packinfo.signatures[0].toCharsString();      } catch (NameNotFoundException e) {        e.printStackTrace();        return null;      }  }}
/* * 殺死所有進(jìn)程 */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();}/* * 殺死選擇的進(jìn)程 */private void killSelected() {  for (int i=0 ;i < isselected.size(); i++){    if(isselected.get(i)){  //如果用戶也選中則返回true      //終止一個(gè)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();}
/* * 獲取系統(tǒng)的剩余內(nèi)存 */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";

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 秦安县| 黄骅市| 比如县| 玉林市| 阿勒泰市| 平南县| 辉县市| 太仆寺旗| 乌海市| 兴化市| 昌图县| 民和| 本溪| 兴安盟| 田阳县| 文安县| 武冈市| 阿瓦提县| 遂溪县| 岫岩| 虎林市| 农安县| 乌兰浩特市| 酉阳| 山阴县| 富锦市| 阿克苏市| 广宗县| 兴宁市| 乐清市| 丘北县| 依兰县| 延长县| 沂南县| 五常市| 乐昌市| 阳谷县| 呼玛县| 普洱| 汉阴县| 温宿县|