`
ai_longyu
  • 浏览: 516460 次
社区版块
存档分类
最新评论

android Launcher——数据加载与变更

 
阅读更多

在前面我的blog中,我已经说过了,Launcher所有的桌面项数据是存储在launcher.db/favorites表中
在Launcher启动时loadeworkspace函数中会从数据库中查询所有的数据并显示出来,这个桌面项数据加载过程在我的blog Launcher——启动过程详解中有比较详细的描述,这篇blog,我着重讲述Launcher桌面项的添加,变更和删除,下面就进入主题
1.Launcher桌面项的添加:从用户操作的角度来看,我们有两种方式来添加桌面项
--1.从all app view中拖到桌面,从下面的调用堆栈知道最后通过LauncherProvider.insert把拖过来的桌面项添加到了桌面,在拖放结束时执行(launcher2.Workspace.onDrop).
at com.android.launcher2.LauncherProvider.insert(LauncherProvider.java:129)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:174)
at android.content.ContentResolver.insert(ContentResolver.java:587)
at com.android.launcher2.LauncherModel.addItemToDatabase(LauncherModel.java:242)
at com.android.launcher2.LauncherModel.addOrMoveItemInDatabase(LauncherModel.java:133)
at com.android.launcher2.Workspace.onDropExternal(Workspace.java:1203)
at com.android.launcher2.Workspace.onDropExternal(Workspace.java:1165)
at com.android.launcher2.Workspace.onDrop(Workspace.java:1125)
--2.通过长按桌面打开一个dialog来添加桌面项,通过对象框添加最后调用同样的方法LauncherProvider.insert去实现操作,只是前面的发起动作不同,它是在选择应用的activity结束后回到Launcher.onActivityResult发起调用的。
at com.android.launcher2.LauncherProvider.insert(LauncherProvider.java:129)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:174)
at android.content.ContentResolver.insert(ContentResolver.java:587)
at com.android.launcher2.LauncherModel.addItemToDatabase(LauncherModel.java:242)
at com.android.launcher2.LauncherModel.addOrMoveItemInDatabase(LauncherModel.java:133)
at com.android.launcher2.Workspace.onDropExternal(Workspace.java:1203)
at com.android.launcher2.Workspace.addApplicationShortcut(Workspace.java:1117)
at com.android.launcher2.Launcher.completeAddApplication(Launcher.java:931)
at com.android.launcher2.Launcher.onActivityResult(Launcher.java:579)

2.Launcher桌面项的变更:Launcher桌面项的变更只有我们拖动桌面项,改变桌面项的位置,当结束拖放时,会通过调用LauncherProvider.update函数来修改launcher.db/favorites表中的记录来变更桌面项的位置信息。
at com.android.launcher2.LauncherProvider.update(LauncherProvider.java:185)
at android.content.ContentProvider$Transport.update(ContentProvider.java:204)
at android.content.ContentResolver.update(ContentResolver.java:707)
at com.android.launcher2.LauncherModel.moveItemInDatabase(LauncherModel.java:159)
at com.android.launcher2.Workspace.onDrop(Workspace.java:1144)

3.Launcher桌面项的删除:把桌面项拖动到垃圾箱时执行,不多说什么了,给个调用堆栈一看就明白,DeleteZone就是垃圾箱对象对应的构造类
at com.android.launcher2.LauncherProvider.delete(LauncherProvider.java:168)
at android.content.ContentProvider$Transport.delete(ContentProvider.java:198)
at android.content.ContentResolver.delete(ContentResolver.java:675)
at com.android.launcher2.LauncherModel.deleteItemFromDatabase(LauncherModel.java:271)
at com.android.launcher2.DeleteZone.onDrop(DeleteZone.java:123)

分享到:
评论

相关推荐

    安卓Android源码——Android Launcher 源码修改可编译.zip

    "安卓Android源码——Android Launcher 源码修改可编译.zip" 这个标题表明我们关注的是Android操作系统的源代码,特别是与启动器(Launcher)相关的部分。Launcher是用户与Android系统交互的主要界面,它管理应用...

    安卓Android源码——安卓Android Launcher 桌面分页滑动代码.rar

    以上就是关于“安卓Android源码——安卓Android Launcher 桌面分页滑动代码”这个主题的一些关键知识点。通过深入理解这些概念和技术,开发者可以更好地理解和定制自己的启动器,提供独特的用户体验。

    安卓Android源码——Launcher2.rar

    【安卓Android源码——Launcher2】是Android操作系统中核心组件之一的桌面启动器的源代码。这个源码库主要包含了Android系统默认的二级启动器(Launcher2)的实现,它是用户与设备交互的重要界面,负责展示应用快捷...

    安卓Android源码——高仿小米launcher(ZAKER)跨屏拖动item.zip

    本压缩包"安卓Android源码——高仿小米launcher(ZAKER)跨屏拖动item.zip"提供了对小米Launcher(ZAKER风格)跨屏拖动item功能的实现,这对于开发者来说是一个宝贵的资源,可以帮助他们学习如何构建类似的应用启动器...

    安卓Android源码——Launcher源码修改可编译.zip

    Launcher属于框架层的一部分,它是用户与Android系统交互的第一道窗口。它的源码通常位于`frameworks/base/packages/Launcher3`目录下,包含了大量的Java代码和资源文件。通过分析这部分代码,你可以了解如何处理...

    Androidlauncher开发.pdf

    Android_launcher 开发概述 Android_launcher 是 Android 系统中的一個重要组件,负责管理用户的桌面环境。作为一个 GUI,它不仅需要提供对所有应用程序的映射,还需要具备良好的交互性和美观的界面设计。在 ...

    安卓Android源码——安卓Android Launcher 桌面分页滑动代码.zip

    这份“安卓Android源码——安卓Android Launcher 桌面分页滑动代码.zip”包含的源码着重解析了如何实现桌面分页滑动的逻辑。现在我们将深入探讨这一主题,讲解其中的关键知识点。 首先,我们来看看Android Launcher...

    androidlauncher应用开发完整清晰版

    简而言之,Launcher就是我们常说的“桌面”,它是用户与手机交互的第一道门户。 #### 二、Launcher应用的主要组成部分 1. **清单文件(Manifest)**:清单文件是Launcher应用的基础配置文件,它定义了应用的基本...

    OTA升级时,清空launcher3数据OTA升级时,清空launcher3数据.zip

    清空`launcher3`数据意味着删除与启动器相关的所有个性化设置和配置,使用户在升级后获得一个全新的启动器体验。 在C#编程语言中,虽然不直接参与Android系统的OTA升级过程,但可以用于构建服务器端的OTA更新系统,...

    android Launcher源码详解

    Android Launcher 源码详解 Android Launcher 是 Android 系统中一个非常重要的组件,负责显示桌面程序和管理应用程序图标。了解 Launcher 的源码可以帮助我们更好地理解 Android 系统的设计思想和实现机制。本文...

    Android Launcher3源码

    `Loader`机制确保了数据在后台异步加载,同时在数据变更时自动刷新UI。 6. **个性化和设置** `SharedPreferences`用于存储用户的个性化设置,如壁纸、布局、图标大小等。`PreferenceFragment`和`PreferenceScreen`...

    android launcher3源码 循环翻页

    Android Launcher3是Android系统的核心组件之一,它是用户与系统交互的门户,承担着应用程序启动、桌面布局管理等关键任务。本篇文章将深入探讨Launcher3的源码,特别是其循环翻页的实现原理,帮助开发者更好地理解...

    android Launcher2.2源码

    这一过程涉及到ActivityManagerService的调度,以及Intent的解析,源码中的`com.android.launcher2.Launcher$LoaderCallbacks`类处理了数据加载的逻辑。 6. **动态壁纸与小部件** Android 2.2支持动态壁纸和小部件...

    安卓Android源码——Launcher桌面分页滑动代码.zip

    这份"安卓Android源码——Launcher桌面分页滑动代码.zip"提供了关于如何实现Launcher应用中分页滑动功能的源代码。下面将详细解析这个主题,帮助你理解其背后的实现机制。 首先,我们来看"TestPagedView"这个名字,...

    android手把手教你开发launcher.pdf

    Android Launcher 开发指南 Android Launcher 是 Android 操作系统中的桌面应用程序,负责管理桌面图标、widget 和其他桌面元素。下面我们将一步步指导您如何开发一个自己的 Launcher,並使其替代系统的默认 ...

    android launcher2源码

    3. **数据存储与加载**: Launcher2使用SQLite数据库来持久化用户设置和布局信息。`DatabaseHelper.java`包含了数据库的创建、升级和查询操作。当用户移动、添加或删除图标时,这些更改会被同步到数据库,以便在...

    安卓Android源码——高仿小米launcher(ZAKER)跨屏拖动item.rar

    "安卓Android源码——高仿小米launcher(ZAKER)跨屏拖动item.rar" 这个标题揭示了我们即将探讨的核心内容:一个针对Android操作系统的源代码项目,该项目旨在模仿小米(Xiaomi)启动器(Launcher)的特性,特别是...

    Android Launcher 桌面分页滑动代码.zip

    在Android系统中,Launcher是用户与设备交互的主要入口,它呈现了桌面布局,包括应用快捷方式、小部件等。当你看到“Android Launcher 桌面分页滑动代码.zip”这个压缩包时,我们可以推断这包含了一份实现Android...

    Android应用源码之Android Launcher 桌面分页滑动代码.zip

    通过深入学习这个源码,开发者不仅可以掌握桌面分页滑动的实现,还能了解到Android应用的架构设计、数据加载优化以及手势处理等多个方面的重要知识点。这将对提升Android应用开发能力大有裨益。

    android手把手教你开发launcher(AndroidStudio版)

    在Android系统中,桌面启动器(Launcher)是用户与Android设备交互的起点,负责展示应用图标、列表和各种小部件。Android允许开发者创建自己的Launcher应用,可以替换掉系统默认的桌面应用。 知识点二:...

Global site tag (gtag.js) - Google Analytics