Android---冗余的下载是多余的



本文译自:http://developer.android.com/training/efficient-downloads/redundant_redundant.html

减少下载的最基本的方法是只下载必要的数据,在数据方面,意味着要实现REST API,这些API允许使用参数来指定查询条件,从而限定返回的数据,如指定最后一次更新的时间。

同样,当下载图片时,好的做法是在服务端减少图片的尺寸,而不是下载全尺寸的图片。

本地缓存文件

另一项重要的技术是避免下载重复的数据。可以通过缓存来做这件事情。只要合理,就始终要包一些静态资源,包括那些按需下载的诸如全尺寸的图片等放到缓存中。按需下载的资源应该被分开存储,这样可以定期的刷新这块缓存,以便管理缓存的大小。

为了确保缓存不会导致应用程序显示过期的数据,一定要提取最后更新的请求内容的时间,这个时间位于HTTP响应头中。这就允许你判断相关的内容被刷新的时机。

long currentTime = System.currentTimeMillis());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
long expires = conn.getHeaderFieldDate("Expires", currentTime);
long lastModified = conn.getHeaderFieldDate("Last-Modified", currentTime);

setDataExpirationDate(expires);

if (lastModified <lastUpdateTime) {
  // Skip update
} else {
  // Parse update
}

使用这种方法,还可以有效的缓存动态内容,同时确保不会导致应用程序显示过期的信息。

你可以在非托管的缓存目录中缓存非敏感数据:

Context.getExternalCacheDir();

还可以使用托管或安全的应用程序缓存。需要注意的是,这种内部缓存可能在系统运行时内存低于可用存储时被清空。

Context.getCache();

存储在缓存位置的文件会在应用程序卸载时被删除。

使用HttpURLConnection响应缓存

Android4.0把一个响应缓存添加到HttpURLConnection类中。你可以使用下列反射方法,在被支持的设备上启用HTTP响应缓存:

private voidenableHttpResponseCache() {
  try {
    long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
    File httpCacheDir = new File(getCacheDir(), "http");
    Class.forName("android.net.http.HttpResponseCache")
         .getMethod("install", File.class, long.class)
         .invoke(null, httpCacheDir, httpCacheSize);
  } catch (Exception httpResponseCacheNotAvailable) {
    Log.d(TAG, "HTTP responsecache is unavailable.");
  }
}

上述示例代码会在Android4.0以上的设备上打开响应缓存而不影响早期的版本。

使用被安装的缓存,HTTP请求可以直接从本地缓存中获取服务,而无需打开网络连接。有条件的缓存响应结果,可以有效的验证来自服务端的数据的新鲜度,从而消除相关下载的带宽成本。

从响应缓存中获取未被缓存的响应会引发新的请求。

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值