Android系统级开发进程清理功能的一些记录和发现(二)
来源:互联网 发布:淘宝外观专利权投诉 编辑:程序博客网 时间:2024/06/01 22:00
基于Android 7.0的近期任务列表进程清理实现
最近有小伙伴反应,上篇博客中提到的直接修改近期任务列表的方法在7.0的系统中无法使用,因为找不到onTaskViewDismissed()这个方法了。同时,RecentsActivity更新任务Tasks的方法和6.0相比也有很大的改变,具体改变请小伙伴自行研究,本文主要讲针对7.0改变实现进程清理的方法。
第一步、改造RecentsView
纵观RecentsView中的方法,并没有删除指定任务的方法。既然没有,那么我们就自己写一个呗。(下面的方法添加在RecentsView中)
public void dismissTask(Task t){ RecentsTaskLoader loader = Recents.getTaskLoader(); loader.deleteTaskData(t, false); // Remove the old task from activity manager Recents.getSystemServices().removeTask(t.key.id); }
第二步、在RecentsActivity中执行清理逻辑
好了,那么我们要怎么进行清理呢,请听老夫慢慢道来。同样,在RecentsActivity中添加清理方法,方法如下所示:
private void cleanStack(){ if(is_clean){ reloadStackView(); TaskStack stack=mRecentsView.getStack(); Uri uri=Uri.parse("content://com.example.administrator.phoneclean.contentProvider"); Cursor cursor=getContentResolver().query(uri, null, null, null, null); String packagename; ArrayList<Task> tasks = stack.getStackTasks(); int taskCounts = tasks.size(); while(cursor.moveToNext()){ for (int j = 0; j < taskCounts; j++) { Task t = tasks.get(j); packagename=cursor.getString(cursor.getColumnIndex("packagename")); if((t.key.baseIntent.getComponent().getPackageName()).equals(packagename)){ mRecentsView.dismissTask(t); } } packagename=null; } cursor.close(); is_clean=false; } }
简单说明一下,要清理之前,我们通过reloadStackView()方法重新装载一下任务view以确保是最新的(博主第一次就是没加这个,有些情况进程没清掉),然后我们获取到所有的任务栈stack,最后我们只要对每个stack中的task进行遍历清理即可。再多说一嘴,博主使用自己的应用来提供需要清理的进程包名的,因此上面用了ContentResolver来提供数据。
第三步,在需要的时候调用该方法清理任务。
博主是通过在RecentsActivity中接受广播的方法清理的。在mSystemBroadcastReceiver这个系统广播接收器的filter中添加自己的action,然后收到广播后执行清理。
is_clean=true; cleanStack();
总结
各位读者如果有啥提问或者建议,可以在下面评论,博主看到会第一时间回复的,如果有大神有指教的,还望指点小弟,3ks!期待8.0的变化中~~
阅读全文
1 0
- Android系统级开发进程清理功能的一些记录和发现(二)
- Android系统级开发进程清理功能的一些记录和发现(一)
- Android系统级开发进程清理功能的一些记录和发现
- 模仿360卫士升级(增加主界面清理进程和流量统计的功能)
- Fedora Core 2系统备份的一些发现和问题
- Fedora Core 2系统备份的一些发现和问题
- 获取android系统的一些功能
- Android开发,MapBox的使用及部分功能实现(二)----- draw、layer、以及一些杂的知识点
- 记录android开发用到的功能点
- android camera开发的一些问题记录(上)
- android 开发中一些好的工具(随时记录)
- android开发的一些技巧记录
- 开发Android,记录一些琐碎的知识
- android camera开发的一些问题记录
- 使用vc发现的一些问题记录
- Android开发系列(二十):AutoCompleteTextView(自动完成文本框)的功能和用法
- Android开发系列(二十一):Spinner的功能和用法以及实现列表选择框
- Android开发系列(二十二):AdapterViewFlipper的功能和用法
- 低车速下,扭矩如何增加
- jQuery选择器
- 写给我的JAVA工程师之路-数据表操作
- Agisoft PhotoScan Pro 1.4.0.5076 Win64 1CD
- react-router v4 使用 history 控制路由跳转
- Android系统级开发进程清理功能的一些记录和发现(二)
- Monasca安装配置指导(2/3)
- 前端数据传到后台动态生成Excel文件并提供文件下载
- C#中一些文件的操作
- vue全局自定义指令和局部自定义指令
- 使用机器学习算法打造一个简单的“微博指数”
- ios 中的基本算数函数
- 织梦跳转移动站点
- 使用moogoDB进行模糊查询查不出结果