开发者

Android中Launcher简介及启动流程原理

开发者 https://www.devze.com 2025-07-17 10:50 出处:网络 作者: xzkyd outpaper
目录一、Launcher概述与应用图标显示原理1. Launcher的双重角色2. 应用图标数据加载流程3. 关键类作用二、Launcher启动流程原理1. 系统启动阶段的Launcher加载2. 点击图标启动新应用三、问
目录
  • 一、Launcher概述与应用图标显示原理
    • 1. Launcher的双重角色
    • 2. 应用图标数据加载流程
    • 3. 关键类作用
  • 二、Launcher启动流程原理
    • 1. 系统启动阶段的Launcher加载
    • 2. 点击图标启动新应用
  • 三、问题总结

    一、Launcher概述与应用图标显示原理

    1. Launcher的双重角色

    • 系统入口:响应点击事件,启动其他应用(通过Intent触发AMS)。

    • 桌面管理器:显示已安装应用的图标(从PackageManagerService获取应用信息)。

    2. 应用图标数据加载流程

    Android中Launcher简介及启动流程原理

    关键步骤

    1. 数据加载(子线程):

      • loadworkspace():从数据库加载桌面布局(单元格位置、小部件等android)。

      • loadAllAppythonps():通过PackageManagerServphpice获取已安装应用的ApplicationInfo(包名、图标、启动Intent)。

    2. 视图绑定(主线程):

      • bindAllApplications():将应用列表数据传递给AllAppsContainerView

      • setApps():更新RecyclerViewAdapter,触发图标渲染。

    3. 关键类作用

    类名职责面试考点
    LauncherModel异步加载应用/桌面数据工作线程与主线程协作机制
    LoaderTask执行数据加载的Runnable任务避免主线程阻塞
    IconCache缓存应用图标(避免重复解析)性能优化关键点
    AllAppsRecyclerView显示应用列表的滚动视图复用机制提升性能

    二、Launcher启动流程原理

    1. 系统启动阶段的Launcher加载

    Android中Launcher简介及启动流程原理

    步骤解析

    1. 触发时机SystemServer启动完成后调用AMS.systemReady()

    2. Home Intent生成:创建包含CATEGORY_HOME的Intent(目标为www.devze.comLauncher)。

    3. 启动Launcher:若未运行则通过ActivityStarter启动Launcher主Activity。

    2. 点击图标启动新应用

    Android中Launcher简介及启动流程原理

    关键流程

    1. 跨进程通信:Launcher通过Binder调用AMS.startActivity

    2. 进程创建:AMS通过Socket通知Zygote fork新进程(非Binder因避免死锁)。

    3. 应用初始化

      • ActivityThread.main():初始化主线程Looper、Application。

      • AMS.attachApplication():建立Binder链接,通知启动Activity。

    4. Activity生命周期:依次调用onCreate()onStart()onResume(),触发视图绘制。

    三、问题总结

    请描述从点击桌面图标到应用显示的全过程

    回答:

    “该过程分为 Launcher响应 和 应用启动 两个阶段:

    1. Launcher端编程客栈

    • 点击图标触发startActivity(),生成包含FLAG_ACTIVITY_NEW_TASK的Intent。

    • 通过Binder向AMS发送请求,AMS记录ActivityRecord并检查目标进程是否存在。

    2. 系统调度端

    • 进程不存在:AMS通过Socket通知Zygote fork新进程 → 加载ActivityThread.main() → 初始化Application和主线程Looper。

    • 进程存在:直接复用。

    • AMS通过ApplicationThread代理调度目标Activity的生命周期(onCreate()onResume())。

    3. 应用端

    • ActivityThread处理LAUNCH_ACTIVITY消息 → 反射创建Activity实例。

    • 执行setContentView()onResume() → 触发ViewRootImpl执行Measure/Layout/Draw三阶段绘制。

    • 通过SurfaceFlinger渲染界面到屏幕,完成显示。”

    到此这篇关于android中Launcher简介的文章就介绍到这了,更多相关Android Launcher简介内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号