Bug #118975

【AF】【EVT3】【任务管理器】recent中有应用进程,一键清空后重启设备,recent中仍有同样的进程卡片

Added by CD TEST-方永红 almost 2 years ago. Updated almost 2 years ago.

Status:ASSIGNEDStart date:2023-07-04
Priority:NormalDue 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中仍有与步骤一同样的进程卡片

中科创达软件股份有限公司20230704-164746.mp4 (6.11 MB) CD TEST-方永红, 2023-07-04 16:49

tlog_iov0201017500006162025411a2212290000002271_000077_0704164716.tar.gz (3.49 MB) CD TEST-方永红, 2023-07-04 16:49

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. 这个其实不影响用户使用

Also available in: Atom PDF