【源码剖析】Launcher 8.0 源码 (17) --- Launcher 启动流程 第六步之LoadWorkspace 第2小步(1)图标各参数类型准备

本文详细介绍了Android Launcher8.0启动流程中LoadWorkspace的第二小步,即从数据库中读取布局信息并存入BgDataModel的缓存。这一阶段涉及的数据结构包括workspaceScreens、workspaceItems、appWidgets和Folders。通过LoaderCursor查询Favorites表,获取图标的相关参数如ICON、ICON_PACKAGE、ICON_RESOURCE等,并初始化相关列索引,以便后续处理快捷方式、应用、小部件和文件夹等不同类型的桌面元素。

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

Launcher8.0启动流程的第六步中loadworkspace的第1小步的结束是有一个带布局的数据库,而launcher布局不是直接从数据库放到桌面上,而是从数据库读取到BgDataModel的缓存中在放到桌面上。

 

如果不是第一次开机,那么数据库里面存储着布局的信息,第一小步是不做的,直接做第二小步获取数据库的信息。

 

第二小步就是获取数据库信息。将数据库的信息存入缓存中,即多个ArrayList

集合。在Launcher8.0,有一个类叫做BgDataModel里面有很多集合,专门用来放布局。

比如:

workspaceScreens是保存屏幕的

workspaceItems是桌面的图标

appWidgets是桌面的小部件

Folders是文件夹

以下是源码:

synchronized (sBgDataModel) {
    sBgDataModel.clear();
    final HashMap<String, Integer> installingPkgs = PackageInstallerCompat
            .getInstance(mContext).updateAndGetActiveSessionCache();
    sBgDataModel.workspaceScreens.addAll(loadWorkspaceScreensDb(mContext));

    Map<ShortcutKey, ShortcutInfoCompat> shortcutKeyToPinnedShortcuts = new HashMap<>();
    final LoaderCursor c = new LoaderCursor(contentResolver.query(
            LauncherSettin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值