Android5.1 -Recents分析

本文详细介绍了Android 5.1中RecentsActivity的展示原理和流程,包括Recents界面如何被隐藏、如何通过长按HOME键触发以及RecentsActivity在系统中的特殊处理。通过分析源码,揭示了Recents界面的布局结构和任务栈的管理机制,特别是TaskStackView和TaskView在其中的角色。最后,提到了Recents应用的预加载和更新流程,以及Android 5.1新增的屏幕固定功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Android使用RecentsActivity来展示最近使用过的app。至于此界面,不同品牌的Android智能手机,可能界面都会有所不一样。以Android 5.1的RecentsActivity界面为例,原始风格也跟以往的版本有一些不一样(如图),似乎比以往的界面都要炫酷一些。不过从Android 5.0开始,Recents就有了诸多变化,比如:Android4.4 在SystemUI中并没有Recents文件结构。
                       

    要触发Recents界面,从目前的手机使用来看,大致可以分为两种:
    1)长按HOME键触发Recents界面;
    2)通过点击NavigationBar上的图标(也相当于一个键)来触发Recents界面。
             
    以长按HOME键触发Recents界面为例,来学习和分析Android5.1源码中Recents显示流程,同时也作为记录,方面以后参考。
    Recents界面是个Activity,并且属于SystemUI,既然是属于SystemUI,那就是说Recents界面正常情况下都是在手机开机进入系统时就开始初始化。事实上也确实如此,在手机开机进入锁屏或者Launcher界面以后,触发Recents界面并不会执行onCreate()方法,只是执行onStart()方法。可见通常情况下RecentsActivity被隐藏起来了,这点,我刚开始时候也有点颠覆了我对activity的认知,不过经过后面看代码也就释然了,RecentsActivity是一个比较特殊的activity,framework层会对它做特殊处理:RecentsActivity在Manifest文件中是这么声明的:
<activity android:name=".recent.RecentsActivity"
                android:label="@string/accessibility_desc_recent_apps"
                android:theme="@style/RecentsStyle"
                android:excludeFromRecents="true"
                android:launchMode="singleInstance"
                android:resumeWhilePausing="true"
                android:exported="true">
          <intent-filter>
            <action android:name="com.android.systemui.TOGGLE_RECENTS" />
          </intent-filter>
 </activity>
 真是不同于常用的activity。
 excludeFromRecents 属性表示:
     Indicates that an Activity should be excluded from the list of recently launched activities。(大致含义:表示此activity不会被列在Recents列表内)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值