/** 反选 */ public void unSelect(View view) { for (TaskInfo info : userTaskInfos) { if (info.getPackname().equals(getPackageName())) { continue; } info.setChecked(!info.isChecked()); } for (TaskInfo info : systemTaskInfos) { info.setChecked(!info.isChecked()); } adapter.notifyDataSetChanged(); // 通知界面更新 }
/** 杀死选中的进程 */ public void killAll(View view) { int total = 0; long savedMem = 0; List<TaskInfo> killedTaskInfos = new ArrayList<TaskInfo>(); for (TaskInfo info : userTaskInfos) { if (info.isChecked()) { am.killBackgroundProcesses(info.getPackname()); total++; savedMem += info.getMemsize(); // userTaskInfos.remove(info); killedTaskInfos.add(info); } } for (TaskInfo info : systemTaskInfos) { if (info.isChecked()) { am.killBackgroundProcesses(info.getPackname()); total++; savedMem += info.getMemsize(); // systemTaskInfos.remove(info); killedTaskInfos.add(info); } } for (TaskInfo info : killedTaskInfos) { if (info.isUserTask()) { userTaskInfos.remove(info); } else { systemTaskInfos.remove(info); } } // 给用户一个土司提醒 告诉用户你干了什么事情。 Toast.makeText( this, "杀死了" + total + "个进程,释放了" + Formatter.formatFileSize(this, savedMem) + "的内存", 1) .show(); runningProcessCount -= total; availRam += savedMem; tv_process_count.setText("运行中进程:" + runningProcessCount + "个"); tv_mem_info.setText( "剩余/总内存:" + Formatter.formatFileSize(this, availRam) + "/" + Formatter.formatFileSize(this, totalRam)); adapter.notifyDataSetChanged(); }
@Override public View getView(int position, View convertView, ViewGroup parent) { TaskInfo taskInfo; if (position == 0) { TextView tv = new TextView(getApplicationContext()); tv.setTextColor(Color.WHITE); tv.setBackgroundColor(Color.GRAY); tv.setText("用户进程(" + userTaskInfos.size() + ")"); return tv; } else if (position == (userTaskInfos.size() + 1)) { TextView tv = new TextView(getApplicationContext()); tv.setTextColor(Color.WHITE); tv.setBackgroundColor(Color.GRAY); tv.setText("系统进程(" + systemTaskInfos.size() + ")"); return tv; } else if (position <= userTaskInfos.size()) { taskInfo = userTaskInfos.get(position - 1); } else { taskInfo = systemTaskInfos.get(position - 1 - userTaskInfos.size() - 1); } View view; ViewHolder holder; if (convertView != null && convertView instanceof RelativeLayout) { view = convertView; holder = (ViewHolder) view.getTag(); } else { view = View.inflate(getApplicationContext(), R.layout.list_task_item, null); holder = new ViewHolder(); holder.iv_icon = (ImageView) view.findViewById(R.id.iv_icon); holder.tv_name = (TextView) view.findViewById(R.id.tv_name); holder.tv_memsize = (TextView) view.findViewById(R.id.tv_memsize); holder.cb = (CheckBox) view.findViewById(R.id.cb); view.setTag(holder); } holder.iv_icon.setImageDrawable(taskInfo.getIcon()); holder.tv_name.setText(taskInfo.getName()); holder.tv_memsize.setText( Formatter.formatFileSize(getApplicationContext(), taskInfo.getMemsize())); holder.cb.setChecked(taskInfo.isChecked()); if (taskInfo.getPackname().equals(getPackageName())) { holder.cb.setVisibility(View.INVISIBLE); } else { holder.cb.setVisibility(View.VISIBLE); } return view; }