`
weicaijin8
  • 浏览: 34276 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android 启动Launcher的说明

阅读更多
LauncherApplication->onCreate
  1.//设置最小堆内存4M
  2.//建立应用图标缓存器
  3.//建立LauncherModel
  4.//注册Intent.ACTION_PACKAGE_ADDED,Intent.ACTION_PACKAGE_REMOVED,Intent.ACTION_PACKAGE_CHANGED事件监听器
  LauncherModel作为广播接收器对上面3中事件进行监听
  5.//添加对桌面favorites content provider 数据变化监听器
  二Launcher->onCreate
  1.获取LauncherApplication LauncherModel mIconCache等LauncherApplication初始化的对象
  2.新建拖放控制器new DragController(this)
  4.//获取桌面组件管理器,启动桌面组件host
  5.//从array.hotseats中加载所有的hotseats(热键 如挂机按钮,google浏览器)
  6.从launcher.preferences加载本地设置
  7.//设置壁纸尺寸宽度=display.getWidth()* WALLPAPER_SCREENS_SPAN,高度=display.getHeight()
  8.//加载布局文件
  9.//初始化所有控件
  10.//从Bundle savedInstanceState获取桌面持久化数据 设置mRestoring = true;
  11.如果mRestoring == false,调用LauncherModel加载桌面项 mModel.startLoader(this, true,isLanguageChange);
  a.LauncherModel.Loader.startLoader() 代码同步处理
  b.新建LauncherModel.Loader.LoaderThread线程并启动线程(桌面项加载,详细见第三步)
  12.注册Intent.ACTION_CLOSE_SYSTEM_DIALOGS广播监听
  三 桌面项加载 LauncherModel.Loader.LoaderThread.run:新线程执行
  1.等待主线程运行结束才开始加载
  2.判断是否先加载桌面;loadWorkspaceFirst = cbk != null ? (!cbk.isAllAppsVisible()) : true;
  3.loadWorkspaceFirst==true
  a.loadAndBindWorkspace()
  loadWorkspace():从数据库launcher.db中查询中所有桌面项构造对应类型的ItemInfo对象存入
  mItems,mAppWidgets,mFolders列表.
  bindWorkspace():
  1.laucher.startBinding(),异步调用,在主线程中handle
  //do no things
  2.laucher.bindItems(),异步调用,在主线程中handle
  1.根据ItemInfo对象创建桌面图标view对象
  2.获取item.screen, item.cellX, item.cellY, spanX, spanY,
  调用workspace.addInScreen添加到对应桌面的cell
  1.重新设置桌面图标view 的layoutparam(类型为cellLayout.layoutparam)
  2.根据item.screen获取桌面的celllayout对象,也就是workspace下5个用户桌面中的一个
  3.调用celllayout.addview方法把桌面图标view对象添加为celllayout的child,也就是为用户桌面添加一个桌面图标
  4.桌面图标view对象添加OnLongClickListener=laucher,由laucher负责监听桌面图标view的longclick事件
  5.如果桌面图标是DropTarget对象,拖放控制器mDragController添加该view到拖放目的地列表
  3.laucher.bindFolders(),异步调用,在主线程中handle
  //launcher.mFolders.putAll(mFolders);
  4.laucher.bindAppWidget(),异步调用,在主线程中handle
  1.获取LauncherAppWidgetInfo的appWidgetId
  2.获取AppWidgetProviderInfo appWidgetInfo mAppWidgetManager.getAppWidgetInfo(appWidgetId)
  3.根据appWidgetInfo创建桌面组件的view AppWidgetHostView对象
  4.调用workspace.addInScreen添加到对应桌面的cell
  5.laucher.finishBindingItems(),异步调用,在主线程中handle
  mWorkspaceLoading=false
  b.loadAndBindAllApps();
  如果没有加载apps或者改变了语言设置
  loadAllAppsByBatch();
  1.//设置package 查询条件Intent.ACTION_MAIN Intent.CATEGORY_LAUNCHER
  2.//清空mAllAppsList mAllAppsList.clear();
  3.//packageManager 查询所有应用pakages
  4.分批次mAllAppsList.add 应用pakages
  5.laucher.bindAllApplications()//异步调用
  mAllAppsGrid.setApps(apps)
  6.若分多个批次加载 laucher.bindAppsAdded()//异步调用
  mAllAppsGrid.addApps(apps);
  否则
  onlyBindAllApps();
  1.mAllAppsList.data.clone();
  2.laucher.bindAllApplications()//异步调用
  mAllAppsGrid.setApps(apps)
  4.loadWorkspaceFirst==false
  a.loadAndBindAllApps();
  b.loadAndBindWorkspace();
分享到:
评论

相关推荐

    Android项目高仿小米launcher(ZAKER)跨屏拖动item.rar

    1. **Android启动器(Launcher)开发**:理解Android Launcher的工作原理,包括布局管理、图标显示、快捷方式创建、应用程序抽屉等功能的实现。 2. **自定义视图和手势识别**:为了实现跨屏拖动,需要对Android的...

    Android中实现Launcher功能之添加快捷方式

    在Android系统中,Launcher是用户界面的核心组成部分,它允许用户启动应用程序、管理桌面快捷方式以及自定义主屏幕布局。本文将深入探讨如何在Android中实现Launcher功能,特别是添加快捷方式的部分。 首先,我们...

    基于android 4.0.3的launcher2修改

    "基于Android 4.0.3的Launcher2修改"是一个针对Android系统启动器的自定义开发项目,旨在改进默认的用户界面和功能。在Android 4.0.3(冰淇淋三明治)版本中,Launcher2是原生的桌面应用,负责管理应用程序图标、小...

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

    创建自定义的Android Launcher意味着你需要覆盖默认的启动器行为,例如更改桌面布局、添加特殊功能或调整滑动效果。`TestPagedView`可能包含了实现这些自定义功能的关键代码。 8. **权限与安全**: 当开发自定义...

    Android 4.0.3 Launcher2可导入eclipse中运行

    8. **了解源码**:通过分析Launcher2的源代码,你可以学习到Android启动器的工作原理,如如何处理触摸事件、布局管理、数据持久化等。这对于深入理解Android系统和自定义启动器开发非常有帮助。 以上就是关于...

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

    `launcher3`是Android系统默认的主屏幕应用,负责管理桌面图标、小部件和启动器设置。清空`launcher3`数据意味着删除与启动器相关的所有个性化设置和配置,使用户在升级后获得一个全新的启动器体验。 在C#编程语言...

    Android-Blur-Launcher,模糊发射器建立在谷歌的Nougat发射器3.zip

    对于开发者而言,探索这个项目不仅可以学习到Android启动器的设计原理,还可以了解到如何运用模糊算法、优化性能、处理触摸事件、集成第三方库等多方面的知识。而对于普通用户,通过安装并自定义Android-Blur-...

    Android6.0-Launcher3

    虽然现在大多数开发者使用 Android Studio 进行开发,但此项目说明了如何在 Eclipse 环境下编译 `Launcher3`。这需要配置 AOSP(Android Open Source Project)构建环境,并将项目导入 Eclipse,然后通过 ADT...

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

    本压缩包提供的"Android应用源码之Android Launcher 桌面分页滑动代码"是一个深入理解Android Launcher工作原理的好资源,特别是对于想了解如何实现桌面滑动效果的开发者来说,这是非常有价值的参考资料。...

    Launcher.pdf

    - 文件中还涉及了Launcher UI的组件,包括`DragLayer`、`SearchDropTargetBar`、`AppsCustomizeTabHost`、`WidgetWorkSpace`等,这些是Android启动器用户界面的重要组成部分,用于展示应用程序的图标、拖拽层、搜索...

    Car Launcher桌面启动器自定义配置白痴教程(内含桌面主题启动器APK).rar

    1. **Blauncher.apk** - 这是Android应用包文件,包含了Car Launcher桌面启动器的软件本身。用户可以通过安装这个APK文件在车机上使用或升级Car Launcher。 2. **Car Launcher桌面启动器自定义配置白痴教程.pdf** -...

    Android高级应用源码-Android Launcher 桌面分页滑动代码.zip

    在Android系统中,Launcher是用户与设备交互的入口,它是一个桌面应用,负责展示应用程序快捷方式、小部件以及桌面壁纸等。"Android高级应用源码-Android Launcher 桌面分页滑动代码.zip"是一个关于如何实现Android ...

    安卓Launcher桌面相关-android桌面拖拽效果.rar

    在Android系统中,Launcher是用户界面的核心组成部分,它充当了手机主屏幕,允许用户启动应用、组织快捷方式和小部件。本压缩包“安卓Launcher桌面相关-android桌面拖拽效果.rar”可能包含了一些实现Android ...

    Android Launcher 源码修改可编译.zip

    这份"Android Launcher 源码修改可编译.zip"的资源包含了一个可编译的Android Launcher源码,对于开发者来说,这是一份非常有价值的参考资料,可以深入理解Android启动器的工作原理,以及如何自定义和优化这个核心...

    launcher学习

    "launcher学习"这个主题主要涉及的是Android系统的桌面启动器(Launcher)开发,特别是关于launcher2.1的源代码和相关文档。在这个项目中,你将有机会深入理解Android系统的桌面组件是如何工作的,以及如何自定义和...

    Android launcher 解析

    Android launcher 很细致说明了framework层启动机制

    AnderWeb-android-packages-apps-Launcher-4458ee4.zip

    【标题】"AnderWeb-android-packages-apps-Launcher-4458ee4.zip" 是一个特定版本的Android启动器应用的源代码压缩包。这个启动器是Android操作系统中的核心组件之一,它负责管理手机或平板电脑上的应用程序启动、主...

    AnderWeb-android_packages_apps_Launcher-4458ee4_Android.rar

    描述"AnderWeb-android_packages_apps_Launcher-4458ee4_Android"虽然简洁,但进一步证实了这与一个自定义或修改过的Android启动器有关。AnderWeb可能是一个开发者或者团队的名称,他们对原生Android的启动器进行了...

    Android_开机启动流程

    - [Android启动过程详解](http://blog.csdn.net/basonjiang_sz/category/648399.aspx) Android从Linux系统启动的过程大致分为以下几个步骤: 1. `init`进程启动 2. Native服务启动 3. `SystemServer`启动 4. 应用...

    AnderWeb-android_packages_apps_Launcher-4458ee4.zip

    1. Android启动器的概念及其在系统中的作用。 2. APK文件结构和AndroidManifest.xml的作用。 3. 自定义启动器的开发,包括权限声明、组件管理和UI定制。 4. Android编程语言(如Java或Kotlin)和XML布局文件的使用。...

Global site tag (gtag.js) - Google Analytics