当前位置:首页>安卓APP>学员作业:安卓分屏之FLAG_ACTIVITY_LAUNCH_ADJACENT剖析

学员作业:安卓分屏之FLAG_ACTIVITY_LAUNCH_ADJACENT剖析

  • 2026-10-11 06:27:23
学员作业:安卓分屏之FLAG_ACTIVITY_LAUNCH_ADJACENT剖析

背景:

在学习分屏相关专题时候,我们进入到分屏的方式都是在桌面的最近任务中进行选择2个Task来进入到分屏的。

但是这种进入分屏的方式明显有以下几个缺点:

1、必须要用户手动操作到桌面的最近任务,而且点击最近任务卡片的的“Split Screen”按钮

2、如果要省略最近任务手动点击步骤,还必须获取到SplitScreenController相关的接口对象直接调用startTasks相关接口。

但是这个接口一般只有Launcher从systemui中获取到了。

基于上面的一个启动分屏介绍,如果想要在任意地方启动分屏,那么有什么有更加简单的启动分屏方式吗? 今天马哥带大家来看看另一种启动分屏的方式:

使用FLAG_ACTIVITY_LAUNCH_ADJACENT进行启动分屏。

LAUNCH_ADJACENT启动分屏案例分享

这里启动在系统源码中就有这样一个分屏启动的demo,对应路径如下: development/samples/MultiWindow

MultiWindow的工程结构非常简单:

manifet文件:

    package="com.example.android.multiwindow">
    <application android:label="Multi Window">
        <activity android:name=".CaptionOverlayActivity"
                android:label="Caption Overlay"
                android:resizeableActivity="true"
            android:exported="true"
                android:theme="@android:style/Theme.Holo.Light">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".LaunchingAdjacentActivity"
            android:exported="true"

            android:label="Launch Adjacent">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

启动分屏实战核心代码如下:

                Intent intent = new Intent("android.settings.SETTINGS");
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
                startActivity(intent);

编译安装验证一下效果:

make MultiWindow
adb install -r out/target/product/emulator_x86_64/system/app/MultiWindow/MultiWindow.apk


效果如下:

然后发现会进入分屏:

那么大家肯定会有疑问,为啥就简单加入了一个FLAG_ACTIVITY_LAUNCH_ADJACENT就可以进入分屏呢?系统到底做了什么呢?这些疑问就留给各位学员的作业,大家进行剖析FLAG_ACTIVITY_LAUNCH_ADJACENT相关原理哈。

学员作业要求:

1、剖析出FLAG_ACTIVITY_LAUNCH_ADJACENT在system_server的相关流程和处理

2、剖析出FLAG_ACTIVITY_LAUNCH_ADJACENT如何触发在systemui的相关SplitScreen启动对应分屏

3、针对FLAG_ACTIVITY_LAUNCH_ADJACENT这个flag启动分屏方式,一般的适用场景和优缺点,你有什么启动分屏的相关的改进建议或者想法

其他分屏相关干货实战项目知识:

2026第一课:安卓14-1车机手机三分屏实战专题--首发优惠活动

  重大消息:车载AAOS系统实现三分屏二分屏课程实战专题

三分屏课程首发活动优惠开始啦,新老顾客都有折扣优惠,具体感兴趣的朋友,了解详细优惠可以私聊马哥微信

最新文章

随机文章