第一,在应用程序中有三个线程存在:主线程(随activity的声明周期启动销毁)、feed初始化线程(进入程序时只运行一次,用于加载相册初始信息)、feed监听线程(一直在跑,监听相册和相片的变更)。
第二,不考虑CacheService 启动的主要流程归纳如下:
1.首次进入程序Gallery调用onCreate,此时发送初始化消息进入消息队列;然后Gallery调用onResume,向下进入
GridLayer的onResume,如果此时Mediafeed对象没有进行初始化则什么也不干(第一次一般都是这样),否则调用Mediafeed
的onResume;
2.处理消息队列中的HANDLE_INTENT消息,Gallery处理这个消息会初始化数据源,从而调用GridLayer的
setDataSource方法,这个方法会触发底层MediaFeed的启动方法start,执行完后启动feed监听线程
继续执行MediaFeed的run方法。
start方法会作两件事:调用自己底层的重新开始方法onResume,onResume中会为图像和视频这两个媒体源分别增加“内容变化监听器”,并请求马上刷新这两个媒体源(加入全局的刷新请求列表);启动feed初始化线程mAlbumSourceThread。
3.其中MediaFeed初始化线程的工作是:调用MediaFeed的loadMediaSets加载相册,它又调用了下层
LocalDataSource中的refresh方法(查询数据库是否有相册变化,新增或修改feed中相应的MediaSet相册的名字)和
loadMediaSets方法(调用下层CacheService.loadMediaSets方法,这个方法下面会重点展开)加载所有相册和相册中的
所有相片信息。
4.MediaFeed监听线程MediaFeed.run()的工作是:根据“内容变化监听器“返回的媒体变动消息(增删改),持续不断的更新MediaFeed中的相册和相片变量。
具体机制是这样的,如果全局的刷新请求列表中有内容,则调用LocalDataSource.refresh进行相册信息的更新(其中
LocalDataSource.refresh调用了CacheService的computeDirtySets),然后run遍历每个相册并调用
dataSource.loadItemsForSet()方法为相册加载相片记录。
第三,不考虑CacheService 新增和删除相片文件夹的主要流程归纳如下:
1.对应【用相机照相后退回主程序,生成camera文件夹】部分,首先GridLayer判断mMediaFeed非空即已经初始化过,则直接调用
MediaFeed.onResume方法,上面提到它会为图像和视频这两个媒体源分别增加“内容变化监听器”,并将其加入全局的刷新请求列表。
2.可别忘了MediaFeed监听线程MediaFeed.run()方法,它一直在默默无闻的等待者全局的刷新请求列表有所变化。这时第二中的4这个步骤又被激活了,这之后更新相册和相片信息就是自然的了。
3.对应【删除这个camera文件夹】,也是走的第2步这个过程。
分享到:
相关推荐
总之,Android Gallery3D的源码是一个丰富的学习资源,它涵盖了Android开发的多个关键领域,包括3D图形编程、数据管理、性能优化、用户交互设计以及项目构建。对于希望提升Android开发技能的工程师来说,深入研究这...
总结,Gallery3D作为Android平台上的一个开源项目,其源码为我们揭示了高效3D图片浏览应用的实现原理,包括数据加载、3D渲染、UI设计和性能优化等多个方面的知识。通过深入学习和理解,开发者不仅能提升自己的...
《深入剖析Android Gallery3D源码》 在Android操作系统中,Gallery3D是一款经典的图片浏览应用,它以其高效、流畅的用户体验而广受好评。本文将深入探讨Gallery3D的源码,帮助开发者理解其背后的实现原理,进一步...
在"gallery3d源码学习总结(三)——Cache缓存及数据处理流程"中,可能讲解了如何有效地缓存图片和处理数据,以优化性能和用户体验。在3D滚动场景中,高效的缓存策略能确保即使在快速滚动时,图片加载仍然流畅。而...
总结来说,Gallery3D作为Android平台的一款经典应用,其源码提供了丰富的学习资源,涵盖了Android应用开发的多个重要方面,包括UI设计、数据管理、图形渲染、性能优化等。深入研究并实践这些知识点,对于任何Android...
《Gallery3D源码解析——打造高效且直观的图库应用》 Gallery3D是一款流行的开源图库应用程序,以其高性能和用户友好的界面而受到广大开发者和用户的喜爱。本文将深入探讨Gallery3D的源码,揭示其在图像处理、性能...
总之,分析Gallery3D的源码不仅可以帮助我们理解Android系统的多媒体处理机制,还能提升我们在图像展示、数据管理、性能优化等方面的开发技能。通过对源码的深入研究,开发者能够掌握更多的实践技巧,从而在Android...
总的来说,通过对“Gallery2”源码的学习,开发者可以深入了解Android系统的图像处理、数据管理、UI设计、性能优化等多个方面,对于提升Android开发能力大有裨益。同时,这也是一种实践驱动的学习方式,能帮助开发者...
《安卓Android源码——Gallery3D深度解析》 在安卓Android的世界里,源码是开发者探索系统奥秘、提升应用性能、实现个性化定制的关键。本文将深入探讨“Gallery3D”这一组件的源码,帮助读者理解其工作原理,从而在...
**Android Gellary3D 源码解析*...通过深入研究Android Gellary3D的源代码,开发者可以学习到如何在Android平台上实现高效的3D图形渲染、数据加载优化、UI设计以及多线程编程,这对于提升Android应用开发技能大有裨益。
详情请参阅 在Eclipse中编译运行Android4.3应用源码——Launcher2和Gallery2 http://blog.csdn.net/klpchan/article/details/11843295
Gallery应用作为系统内置的图片查看器,它的源码对于我们理解Android图像处理、UI设计以及性能优化具有极高的学习价值。本文将深入探讨Android 4.0 Gallery源码,揭示其内部的工作机制和设计思想。 1. **架构设计**...
Android 4.0 Gallery3D源码分析 Gallery3D是Android系统中一个经典的3D图像浏览应用,尤其在Android 4.0(冰淇淋三明治)版本中,它提供了流畅且富有视觉冲击力的用户体验。这个源码是开发者深入理解Android 3D图像...
android gallery3d源码,我测试过了,可以正常运行,希望对大家有用。
**Android Gallery3D详解** Gallery3D是Android...通过分析和学习Gallery3D的源代码,开发者不仅可以提升对Android平台的深入理解,还能掌握3D图像处理、性能优化等高级技术,为自己的应用开发提供宝贵的实践经验。
Gallery3D源码分析
《Gallery3D:Android平台上...总结,Gallery3D是Android开发中一种创新的图片展示方式,通过3D滚动和硬件加速提供了出色的用户体验。开发者可以参考其源码,结合实际需求,定制自己的3D画廊效果,为应用增添更多亮点。
`Android Gallery 3D效果`通常是指一种模拟三维空间中的图片滚动效果,使用户感觉图像在空间中旋转。这种效果能够增加应用程序的视觉吸引力,提高用户体验。要实现这样的效果,开发者需要对Android的视图动画、触摸...
在Android平台上,`Gallery`组件曾经是实现3D滚动效果的一种流行方式,它允许用户以横向滑动的方式浏览图片或项目列表,同时提供了一种视觉上的立体感。然而,随着Android版本的更新,`Gallery`组件在API 16...
Gallery3D是Android操作系统中的一款强大的3D图像查看应用,专为用户提供了独特的三维浏览体验。它不仅是一款高效的图片管理工具,还利用了Android设备的硬件加速功能,实现了流畅的3D动画效果,让用户在手机和平板...