android5.1 recentApp 移除全部
2016-07-11 20:29
429 查看
在android5.1 原生的recents App 加个功能,一个按钮,点击清空任务列表。
阅读systemUI 源码,recents App代码逻辑位于com.android.systemui.recents 包下。
在manifest.xml中可以找到RecentsActivity,也就是说任务列表是个activity,而且singleInstance.附manifest声明。
以下列出清空任务列表关键类,SystemServiceProxy.java
有个getRecentTasks();方法,该方法通过ActivityManager的getRecentTasksForUser()获取任务列表数据,得到List<ActivityManager.RecentTaskInfo>,
也就是说在systemUI的recentsApp中,这是数据源。
在getRecentTasksForUser()中,只有一行代码,new ActivityManagerNative().getDefault().getRecentTasks();
核心逻辑在ActivityManagerNative中;
移除单个任务的方法是 removeTask();同样通过ActivityManager调用removeTask(),然后activityManagerNative做移除操作。
好了,既然可以获取全部,又可以移除单个,做下foreach 就可以移除全部了。
注意,removeTask()有个参数是taskId,通过阅读代码得知, 就是RecentTaskInfo.persistentId字段。
(见RecentsTaskLoadPlan.java preloadRawTasks()及preloadPlan())
preloadRawTasks() 通过SystemServiceProxy得到List<RecentTaskInfo>,
prepladPlan()遍历List,创建Task.TaskKey对象,其中taskId 就是这是赋值的。
阅读systemUI 源码,recents App代码逻辑位于com.android.systemui.recents 包下。
在manifest.xml中可以找到RecentsActivity,也就是说任务列表是个activity,而且singleInstance.附manifest声明。
<activity android:name=".recents.RecentsActivity" android:label="@string/accessibility_desc_recent_apps" android:exported="false" android:launchMode="singleInstance" android:excludeFromRecents="true" android:stateNotNeeded="true" android:resumeWhilePausing="true" android:theme="@style/config_recents_activity_theme"> <intent-filter> <action android:name="com.android.systemui.recents.TOGGLE_RECENTS" /> </intent-filter> </activity>
以下列出清空任务列表关键类,SystemServiceProxy.java
有个getRecentTasks();方法,该方法通过ActivityManager的getRecentTasksForUser()获取任务列表数据,得到List<ActivityManager.RecentTaskInfo>,
也就是说在systemUI的recentsApp中,这是数据源。
在getRecentTasksForUser()中,只有一行代码,new ActivityManagerNative().getDefault().getRecentTasks();
核心逻辑在ActivityManagerNative中;
移除单个任务的方法是 removeTask();同样通过ActivityManager调用removeTask(),然后activityManagerNative做移除操作。
好了,既然可以获取全部,又可以移除单个,做下foreach 就可以移除全部了。
注意,removeTask()有个参数是taskId,通过阅读代码得知, 就是RecentTaskInfo.persistentId字段。
(见RecentsTaskLoadPlan.java preloadRawTasks()及preloadPlan())
preloadRawTasks() 通过SystemServiceProxy得到List<RecentTaskInfo>,
prepladPlan()遍历List,创建Task.TaskKey对象,其中taskId 就是这是赋值的。
相关文章推荐
- android developer tiny share-20160711
- android developer tiny share-20160711
- Android重打包
- iOS二维码扫描 原生API 源码Demo 2016最新版本 简单易用
- 【浅墨Unity3D Shader编程】之六 暗黑城堡篇: 表面着色器(Surface Shader)的写法(一)
- 微信支付之解决如何在测试环境进行支付测试
- 微信公众平台java开发之接口url与token填写
- mtk Android如何调试recovery模块
- 【IOS学习】Objective-C中的instancetype和id区别
- iOS模型和代码组织结构
- iOS基础:线程1-线程介绍
- android之短信拦截器
- android简易画图板与五子棋
- Android中自定义控件的步骤
- android studio生成get和set方法
- ios---类簇
- android横竖屏切换时候Activity的生命周期
- iOS开发常见bug
- Android基础
- iOS 关于僵尸对象和僵尸指针的那些事儿