android近期列表RecentsActivity的目录在/frameworks/base/packages/SystemUI/
frameworks的修改需要在fastboot模式下烧system.img文件。
首先,接受开机广播
处理它的Receiver类是BootReceiver。下面是Receiver的内容:
随后,在广播中开启了LoadAveragService服务。
SystemUiServier 服务也开启了
紧接着就是显示界面,主界面是RecentsActivity,首先onCreate(),onStart()。
在onCreate方法中发现布局文件是
接下来看一下布局文件
发现,基本都是自定义控件。
最下面的id = recents_no_apps,是列表中没有条目的时候才会显示。
查找会发现,这个id只有在RcentsPanelView中使用,接下来先看下:
定义一个View
如果有apps的时候,就VISIBLE,否则就是INVISIABLE。
上面noApps的值得来是根据mRecentTaskDescriptions,这是一个List
每一个app都保存成了一个TaskDescription。接下来看一下TaskDescription:
它主要的字段有intent:用于跳转到应用,
taskId,用于标识的id,比如删除,点击,跳转等使用。
以及描述,包名等,icon等。。。
接着来查看一下当有信息的时候显示的布局,RecentsAcitvity的大布局是自定义的,实现类是RecentsPanelView。
整个列表的大布局又放在了一个FrameLayout布局中,然后列表显示在一个自定义的布局中,实现类是RecentsVerticalScrollView。
这个布局之后还有一个LinearLayout