Bug #118975
【AF】【EVT3】【任务管理器】recent中有应用进程,一键清空后重启设备,recent中仍有同样的进程卡片
Status: | ASSIGNED | Start date: | 2023-07-04 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | CD FW-鲁凯峰 | % Done: | 0% | |
Category: | CD-APP | |||
Target version: | - | |||
Need_Info: | -- | Found Version: | 118 | |
Resolution: | -- | Degrated: | -- | |
Severity: | Normal | Verified Version: | ||
Reproducibility: | Every time | Fixed Version: | ||
Test Type: | ST | Root cause: |
Description
【测试版本】
中控0092
副屏118
【前置条件】
None
【操作步骤】
1.recent中有应用进程
2、一键清空后重启设备
【预期结果】
2、recent中没有应用进程
【实际结果:
1、recent中仍有与步骤一同样的进程卡片
History
#1 Updated by CD APP-王宏 almost 2 years ago
- Status changed from New to ASSIGNED
- Assignee changed from CD APP-王宏 to CD FW-鲁凯峰
■ Current conclusion
分析完毕
■ My analysis
根据代码流程查看,
动画执行300毫秒,400毫秒时会调用FW接口removeAllRecentTasks(),
但是系统去执行后台清理进程的时候需要时间。
Launcher中主要是通过
ActivityManagerWrapper
public List<RecentTaskInfo> getRecentTasks(int numTasks, int userId) {
return mAtm.getRecentTasks(numTasks, RECENT_IGNORE_UNAVAILABLE, userId);
}
去获取的进程卡片,未做缓存操作。
■ Next action
请FW排查一下,为何重启进程并未清零,是否还有优化空间
#2 Updated by CD FW-鲁凯峰 almost 2 years ago
■ Current conclusion
申请暂时不解
■ My analysis
产生问题的原因是清除recent任务后,突然断电,这个时候recent task文件相关的内容还没有从内存里面删除,所以下次开机还会存在.
正常重启的话,是不会出现该问题的
正常情况下,一键删除后台进程,大概3s左右后才会删除掉保持在内存里面的task信息
//删除recent
07-27 20:43:20.618 1036 3169 I wm_task_removed: [10,removeChild:removeChild last r=ActivityRecord{2c0858b u0 com.example.mytest1/.MainActivity taskAffinity=10105:com.example.mytest1 t-1 f}} in t=Task{13a726 #10 type=standard A=10105:com.example.mytest1 U=0 mode=fullscreen translucent=true sz=0 visible freeform task=true rootAffinity=10105:com.example.mytest1 isMini=false}]
07-27 20:43:20.618 1036 3169 I wm_task_removed: [10,removeChild]
//3s后删除内存里面的文件
07-27 20:43:23.617 1036 3156 D TaskPersister: Writing task=Task{13a726 #10 type=standard A=10105:com.example.mytest1 U=0 mode=fullscreen translucent=true sz=0 visible freeform task=true rootAffinity=10105:com.example.mytest1 isMini=false}
07-27 20:43:23.620 1036 3156 D TaskPersister: Looking for obsolete files.
07-27 20:43:23.623 1036 3156 D TaskPersister: mRecents=com.android.server.wm.RecentTasks@bd6fb99
07-27 20:43:23.627 1036 3156 D TaskPersister: removeObsoleteFiles: persistentTaskIds={} files=[Ljava.io.File;@e4b3260
07-27 20:43:23.628 1036 3156 D TaskPersister: removeObsoleteFiles: persistentTaskIds={} files=[Ljava.io.File;@59de319
正常情况下,一键清楚后台进程,然后马上使用reboot命令重启或者关机的话,也是正常的
//接收到重启命令
07-27 20:45:45.885 0 0 I [ 1946.771164] init: Received sys.powerctl='reboot,shell' from pid: 6930 (/system/bin/reboot)
07-27 20:45:45.885 0 0 I [ 1946.779962] init: sys.powerctl: do_shutdown: 0 IsShuttingDown: 0
//马上开始同步删除内存里面的文件
07-27 20:45:45.906 1036 3156 D TaskPersister: Looking for obsolete files.
07-27 20:45:45.907 1036 2943 D TaskPersister: wakeup: task=Task{724a322 #11 type=standard A=10105:com.example.mytest1 U=0 mode=fullscreen translucent=true sz=1 visible freeform task=true rootAffinity=10105:com.example.mytest1 isMini=false} flush=false Callers=com.android.server.wm.RecentTasks.notifyTaskPersisterLocked:541 com.android.server.wm.ActivityTaskManagerService.notifyTaskPersisterLocked:3773 com.android.server.wm.Task.removedFromRecents:1575 com.android.server.wm.ActivityTaskSupervisor.onRecentTaskRemoved:1809
07-27 20:45:45.922 1036 3156 D TaskPersister: mRecents=com.android.server.wm.RecentTasks@bd6fb99
07-27 20:45:45.930 1036 3156 D TaskPersister: removeObsoleteFiles: persistentTaskIds={} files=[Ljava.io.File;@337a1fa
07-27 20:45:45.931 1036 3156 D TaskPersister: removeObsoleteFiles: persistentTaskIds={} files=[Ljava.io.File;@36653ab
07-27 20:45:45.931 1036 3156 D TaskPersister: removeObsoleteFiles: Found taskId=11
07-27 20:45:45.931 1036 3156 D TaskPersister: removeObsoleteFiles: deleting file=11_task.xml
07-27 20:45:45.934 1036 3156 D TaskPersister: Writing task=Task{724a322 #11 type=standard A=10105:com.example.mytest1 U=0 mode=fullscreen translucent=true sz=1 visible freeform task=true rootAffinity=10105:com.example.mytest1 isMini=false}
07-27 20:45:45.935 1036 3156 D TaskPersister: Looking for obsolete files.
07-27 20:45:45.936 1036 3156 D TaskPersister: mRecents=com.android.server.wm.RecentTasks@bd6fb99
07-27 20:45:45.938 1036 3156 D TaskPersister: removeObsoleteFiles: persistentTaskIds={} files=[Ljava.io.File;@f5f45a1
07-27 20:45:45.939 1036 3156 D TaskPersister: removeObsoleteFiles: persistentTaskIds={} files=[Ljava.io.File;@e4de3c
■ Next Action
申请暂时不解,理由如下:
1. 突然断电导致的TaskPersister没有同步删除内存里面的文件,这种情况暂时无法处理,因为上层无法知道是什么时候突然断电的
2. 这个其实不影响用户使用