久趣下载站

当前位置: 首页 » 游戏攻略 » Android桌面应用Launcher详解

Android桌面应用Launcher详解

在之前的文章《Android启动过程-万字长文(Android14)》中介绍了Android系统的启动过程,本篇文章将继续介绍桌面应用Launcher。

一、Launcher介绍

在之前的文章中提到Launcher是Android系统启动后,由SystemServer Activity Manager Service (AMS)加载的第一个应用程序。Launcher又被称为桌面程序,负责Android桌面的启动和管理,用户使用的应用程序(App)都是通过Launcher来启动的。

二、下载及编译

2.1 下载

使用Git下载Launcher源码:

git clone https://android.googlesource.com/platform/packages/apps/Launcher3

进入项目目录:

cd Launcher3

切换到Android14分支:

git checkout android14-release

2.2 编译

使用AndroidStudio编译下载好的Launcher3工程。编译过程中遇到问题及解决方案可以参考以下博客:基于android 11的Launcher3本地Android studio调通流程,AndroidStudio编译调试aosp11R 的Launcher3。

三、源码解析

3.1 AndroidManifest.xml

在项目根目录的AndroidManifest.xml中定义了Launcher做为桌面程序的属性:

<application>
    <activity
        android:name="com.android.launcher3.Launcher"
        android:launchMode="singleTask">
        <intent-filter>
            <category android:name="android.intent.category.HOME" />
        </intent-filter>
    </activity>
</application>

3.2 Launcher.java

Launcher.java是Launcher的启动页面,负责资源初始化和桌面UI创建。

3.3 Workspace、AppsView和Widget示例

3.1 Workspace(工作区)

结构说明:

3.2 AppsView(应用程序视图)

3.3 Widget(小组件)

四、点击App图标的事件响应

4.1 触发ItemClickHandler的onClick方法

ItemClickHandler负责处理桌面应用图标的点击事件。桌面图标的点击事件最终会触发ItemClickHandler的onClick方法。onClick方法最终会触发startAppShortcutOrInfoActivity方法。

4.2 Launcher通知系统启动App

在Launcher.java的startActivitySafely方法中调用ActivityContext.java的startActivitySafely方法。最终通过frameworks/base/core/java/android/app/Activity.java 源码地址中的startActivity方法启动了对应的应用程序。

猜你喜欢
本类排行