http://hi.baidu.com/%D6%C7%B4%EF%B8%DF%D4%B6lee/blog/item/b4ecabff0b5e9257d6887df0.html
第一,在应用程序中有三个线程存在:主线程(随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步这个过程
分享到:
相关推荐
资源分类:Python库 所属语言:Python 资源全名:gallery_dl-1.14.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python库,解压后可用。 资源全名:gallery_dl-1.1.1-py3-none-any.whl
gallery-3.0-rc-1-p1非常不错的网络相册系统!
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:gallery_dl-1.3.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:gallery_dl-1.20.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python库。 资源全名:django-gallery-widget-1.2.1.dev0.tar.gz
首页幻灯显示图文的插件content-gallery使用方法,直接复制插件目录content-gallery到WP插件目录里面。然后到WP后台插件里面启用Featured Content Gallery即可。 2.Featured Content Gallery显示图片的方法:首先,...
Gallery Level Selection是一个非常可定制和完整的分页和滚动菜单包。
Gallery-develop-源码.rar
实现较为完整的图片浏览器功能,效果类似iPhone自带的相册应用。包括的功能有:手指划动...显示的图片包括本地图片、相册图片、网络图片。并且能够处理下载和cache(缓存)来自互联网图片。 注意:请在Mac下解压使用
skins-gallery-admin-primeng
资源分类:Python库 所属语言:Python 资源全名:gallery_dl-1.19.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python库。 资源全名:gallery_dl-1.16.1-py3-none-any.whl
IJB-C IJBC ijbc 人脸验证数据集
资源来自pypi官网。 资源全名:gallery_dl-1.3.4-py3-none-any.whl
react-image-gallery 插件 同步幻灯片组件 次组件 跟carouse 有区别, 底下有同步 list 免 c 币 下载地址 http://download.lllomh.com/cliect/#/product/J417959111397665
python库,解压后可用。 资源全名:jmbo_gallery-2.0.0-py2.7.egg