openthos / multiwin-analysis

4 stars 14 forks source link

Daily Report 2017 -07-05 Luo Hao #1587

Open ladehunter opened 7 years ago

ladehunter commented 7 years ago

自动测试方面: 等待敖权的结果,与肖络元讨论了学习自动测试的方法。

multiwindow-7.1方面

已经分析完毕昨天说的39处内容。文档尚需整理,会在周报完成时上传。

进一步阅读了TaskBar的代码,找到了LauchApp功能的代码入口,进行了阅读。为了方便测试重新编译了TaskBar的APK,加入了一些Log。结果和预想的基本一致,TaskBar在启动App方面没有做太多工作,仅仅是对Intent内容中的Flag等内容进行了定义,其定义方式和一般Launcher相比区别不大。也比较易懂。最后调用了 startActivity方法。

重新对7.1中的startActivity方法进行了跟踪。与5.1不同的是7.1的StartActivity方法执行路线中多了ActivitStarter。根据Log显示,在ActivityStarter调用mTargetStack去执行ActivityStack.startActivityLocked方法时,mTargetStack的值已经是FREEFORM_WORKSPACE_STACK_ID了(特别的,对于首次开机刚刚设置完开发者选项的情况下,这里仍是FULLSCREEN_WORKSPACE_STACK_ID)。

综上可以进行以下总结: 1:ActivityStack的值变为FREEFORM相关的操作在ActivityStarter中(mTargetStack是ActivityStarter的成员变量)。目前仍需要锁定具体使其变更的方法,来判断系统是如何完成一系列行为的。

2:TaskBar之所以能够将其启动的App显示为窗口化,主要是基于开发者选项中的Force Activities to be resizable,因此追踪这一变量相关的源代码也是理解7.1多窗口系统运作方式的一条线索

明天计划继续追踪Activity启动路线来判断窗口化启动的方式,同时不排除走不通的时候通过开发者选项内容进行追踪的可能性。后天需要请假去人才中心报到,明天会完成周报,同时上传对目前39出关联和可能出现的新的关联的分析。

谢谢各位

cwhuang commented 7 years ago

多謝分析!

不過 TaskBar 仍無法將不支持 freeform mode 的 app 強制置入 freeform mode. 這點可有辦法解決?

ladehunter commented 7 years ago

分析很浅薄还请见谅!

目前我尝试的App比较少,没有出现TaskBar无法窗口化启动的情况,可否请您将您遇到的无法通过TaskBar窗口化启动的App列举一下?

cwhuang commented 7 years ago

試了一下,這些 apps 不行:

有經看似可以窗口化,但窗口變最大,也無法移動或調整:

多試一些 apps 應該會發現更多...