gallery note

本文介绍了用于在SD卡上存储和读取缓存数据的DiskCache类,并详细解释了其内部实现,包括SparseArray、Record类以及如何使用CacheService进行数据操作。此外,文章还涉及了与缓存相关的类和组件,如AlbumCache、MediaFeed等,以及OpenGL在渲染视图中的应用。

DiskCache.java

A class used to store cache data into theSD card, or read cache from it.

Fields

private LongSparseArray<Record> mIndexMap;

privatefinal LongSparseArray<RandomAccessFile> mChunkFiles

 

LongSparseArray: SparseArrays map longs to Objects. Unlike a normal array of Objects,there can be gaps in the indices. It is intended to be more efficient thanusing a HashMap to map Longs to Objects.

 

mIndexMap: a map from (long) keyto a record which indiactes the offset / size of the data stored in the chunkfile.

 

private static final class Record {

        …

        public final long timestamp;

        public final int chunk;

        public final int offset;

        public final int size;

        public final int sizeOnDisk;

    }

 

mChunkFiles: a map from (Record.) chunkto the random access chunk files.

 

Methods

publicbyte[] get(long key, long timestamp)

publicvoid put(long key, byte[] data, long timestamp)

 

get:

 

put:

 

CacheService.java

extends IntentService

   IntentService is a base class for Servicesthat handle asynchronous requests (expressedas Intents) on demand. Clients send requests through startService(Intent) calls; the service is started as needed, handles each Intent inturn using a worker thread, and stops itself when it runs out of work.   To use it, extend IntentService andimplement onHandleIntent(Intent).IntentService will receive the Intents, launch a worker thread, and stop theservice as appropriate.

All requests are handled on a singleworker thread -- they may take as long as necessary (and will not block theapplication's main loop), but only one request will be processed at a time.

A class used to store cache data into the SD card, or read cachefrom it.

 

 

Fields

publicstaticfinal DiskCache sAlbumCache = new DiskCache("local-album-cache");

publicstaticfinal DiskCache sMetaAlbumCache = new DiskCache("local-meta-cache");

publicstaticfinal DiskCache sSkipThumbnailIds = new DiskCache("local-skip-cache");

 

privatestatic ImageList sList = null;

 

 

 

 

 

 

 

LongSparseArray: SparseArrays map longs to Objects. Unlike a normal array of Objects,there can be gaps

 


 

Gallery.java    is the mainand launcher activity.

App.java    hooks up other activity classes to App,including Gallery.

ImageManager.java    is usedto retrieve and store images in the media content provider.

MediaFeed, MediaSets负责相册集的加载

RenderView.java    extendsGLSurfaceView

 

SDK 中的 android.opengl.GLSurfaceView 类提供如下功能: 

·  在 OpenGL ES 和 View 系统之间建立联系;

·得 OpenGL ES 可以工作在 Activity 生命周期中;

·可选择合适的 frame buffer 像素格式;

·创建并管理一个单独的渲染线程,可以实现平滑的动画;

·提供 debugging 工具和 API。

 

GLSurfaceView.Render 接口负责调用OpenGL来渲染一帧画面,有三个方法: 

·        onSurfaceCreated():  该方法在渲染开始前调用,OpenGL ES 的绘制上下文被重建时也会被调用。当 activity 暂停时绘制上下文会丢失,当 activity 继续时,绘制上下文会被重建。另外,创建长期存在的 OpenGL 资源(如 texture)往往也在这里进行。 

·        onSurfaceChanged():  当 surface 的尺寸发生改变时该方法被调用。往往在这里设置 viewport。若你的 camera 是固定的,也可以在这里设置 camera。 

·        onDrawFrame():  每帧都通过该方法进行绘制。绘制时通常先调用 glClear 函数来清空 framebuffer,然后在调用 OpenGL ES 的起它的接口进行绘制。 


物联网通信协议测试是保障各类设备间实现可靠数据交互的核心环节。在众多适用于物联网的通信协议中,MQTT(消息队列遥测传输)以其设计简洁与低能耗的优势,获得了广泛应用。为确保MQTT客户端与服务端的实现严格遵循既定标准,并具备良好的互操作性,实施系统化的测试验证至关重要。 为此,采用TTCN-3(树表结合表示法第3版)这一国际标准化测试语言构建的自动化测试框架被引入。该语言擅长表达复杂的测试逻辑与数据结构,同时保持了代码的清晰度与可维护性。基于此框架开发的MQTT协议一致性验证套件,旨在自动化地检验MQTT实现是否完全符合协议规范,并验证其与Eclipse基金会及欧洲电信标准化协会(ETSI)所发布的相关标准的兼容性。这两个组织在物联网通信领域具有广泛影响力,其标准常被视为行业重要参考。 MQTT协议本身存在多个迭代版本,例如3.1、3.1.1以及功能更为丰富的5.0版。一套完备的测试工具必须能够覆盖对这些不同版本的验证,以确保基于各版本开发的设备与应用均能满足一致的质量与可靠性要求,这对于物联网生态的长期稳定运行具有基础性意义。 本资源包内包含核心测试框架文件、一份概述性介绍文档以及一份附加资源文档。这些材料共同提供了关于测试套件功能、应用方法及可能包含的扩展工具或示例的详细信息,旨在协助用户快速理解并部署该测试解决方案。 综上所述,一个基于TTCN-3的高效自动化测试框架,为执行全面、标准的MQTT协议一致性验证提供了理想的技术路径。通过此类专业测试套件,开发人员能够有效确保其MQTT实现的规范符合性与系统兼容性,从而为构建稳定、安全的物联网通信环境奠定坚实基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值