78进程管理器的实现
来源:互联网 发布:锻炼时间提醒软件 编辑:程序博客网 时间:2024/05/16 03:38
实现后的效果如下:
在下面添加了四个按钮:全选、反选、清理、设置。
全选的点击事件,其中如果包名是本身的话,不选。
/** * 全选 * * @param view */public void selectAll(View view) {for (TaskInfo info : allTaskInfos) {if (getPackageName().equals(info.getPackname())) {continue;}info.setChecked(true);}// 必须通知数据更新了adapter.notifyDataSetChanged();}反选的点击事件:
/** * 反选 * * @param view */public void selectOppo(View view) {for (TaskInfo info : allTaskInfos) {if (getPackageName().equals(info.getPackname())) {continue;}info.setChecked(!info.isChecked());}adapter.notifyDataSetChanged();}
设置本身的CheckBox不可见:
if (getPackageName().equals(taskInfo.getPackname())) {viewHolder.cb_status.setVisibility(View.INVISIBLE);} else {viewHolder.cb_status.setVisibility(View.VISIBLE);}
为了避免每次杀死一个进程后ListView重新刷新:
if (adapter == null) {adapter = new TaskManagerAdapter();lv_task_manager.setAdapter(adapter);} else {adapter.notifyDataSetChanged();}
清理的逻辑:
/** * 清理 * * 这里存在一个很大的BUG * * @param view */public void killAll(View view) {// ActivityManager am = (ActivityManager)// getSystemService(ACTIVITY_SERVICE);//// int count = 0;//// int savedMem = 0;//// // 记录被杀死的条目// List<TaskInfo> killedTaskInfos = new ArrayList<TaskInfo>();//// for (TaskInfo info : allTaskInfos) {// if (info.isChecked()) {// 被勾选了,杀死这个进程// // 需要添加权限: <uses-permission// // android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>// am.killBackgroundProcesses(info.getPackname());//// if (info.isUserTask()) {// 用户进程// userTaskInfos.remove(info);// } else {// systemTaskInfos.remove(info);// }//// killedTaskInfos.add(info);//// count++;// savedMem += info.getMemSize();// // 不可以在迭代的时候修改集合(切记!!!!)// // allTaskInfos.remove(info);// }//// }// allTaskInfos.removeAll(killedTaskInfos);// adapter.notifyDataSetChanged();// Toast.makeText(// this,// "杀死了" + count + "个进程," + "释放了"// + Formatter.formatFileSize(this, savedMem) + "的内存", 1)// .show();// processCount -= count;// availMem += savedMem;// tv_process_count.setText("运行中进程:" + processCount + "个");// tv_mem_info.setText("剩余/总内存:"// + Formatter.formatFileSize(this, availMem) + "/"// + Formatter.formatFileSize(this, totalMem));// =================第一个版本==============================ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);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();processCount -= total;availMem += savedMem;tv_process_count.setText("运行中进程:" + processCount + "个");tv_mem_info.setText("剩余/总内存:"+ Formatter.formatFileSize(this, availMem) + "/"+ Formatter.formatFileSize(this, totalMem));adapter.notifyDataSetChanged();}
分两个集合去做处理(不对全部的集合做处理,因为全部的集合有两个小标签不包括在内),当item处于选中的状态下,调用:killBackgroundProcesses杀死进程,将相应的包名传入该方法。
0 0
- 78进程管理器的实现
- 38、进程管理器--代码实现
- android进程管理器桌面小控件的实现
- Winform写的进程管理器
- Android平台下实现一个进程管理器
- Android平台下实现一个进程管理器
- Android平台下实现一个进程管理器
- Android平台下实现一个进程管理器
- Android平台下实现一个进程管理器
- Android平台下实现一个进程管理器
- 设备管理器的实现
- 软件管理器的实现
- URL管理器的实现
- 进程管理器
- 游戏程序流、状态处理机、进程管理器、数据包系统的实现
- 进程管理器---一个SDK的例子
- gloomy的《内存与进程管理器》
- gloomy的《内存与进程管理器》
- 如何在VS2005下生成动态运行时库
- linux下tomat不能访问链接的解决方法
- RabbitMQ部署
- 晚餐(五)
- Python 使用list实现简单的map
- 78进程管理器的实现
- XCode的Wax的安装步骤
- Linux中关于swap、虚拟内存和page的区别
- 帧动画
- 百度站长针对SEO人员关系的问题的一些解答
- 晚餐(六)
- sqlload导入大量数据 步骤详解
- LA 3644 X-Plosives
- 九宫格案例