最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年12月30日 14:36:51   作者:傅榮康  
這篇文章主要介紹了Android編程實現(xiàn)任務管理器的方法,涉及Android針對程序與進程操作的相關(guān)技巧,需要的朋友可以參考下

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

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

效果圖:

殺死全部進程

實現(xiàn)思路:

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

核心代碼:

/*
 * 獲取所有進程及用戶 的進程
 */
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));
  }
}

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

/*
 * 獲取某個進程占用的內(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ù)包名 查詢 圖標
   */
  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;
      }
  }
  /*
   * 獲取程序的權(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;
      }
  }
}

/*
 * 殺死所有進程
 */
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();
}

/*
 * 獲取系統(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";

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

相關(guān)文章

最新評論

和龙市| 谢通门县| 南投市| 新河县| 永泰县| 康乐县| 福鼎市| 鸡泽县| 太保市| 台湾省| 新河县| 莎车县| 紫阳县| 丁青县| 大方县| 云梦县| 宁都县| 宿松县| 东台市| 陈巴尔虎旗| 苍溪县| 五莲县| 福建省| 太湖县| 乌苏市| 阳西县| 峡江县| 霍州市| 自贡市| 济南市| 滦平县| 扶风县| 大丰市| 白朗县| 泰和县| 朝阳区| 蕉岭县| 东乌珠穆沁旗| 兴和县| 浠水县| 拜城县|