【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 3 - 使用缓存来避免重复的下载]

Android防快速重复点击 Android防快速重复点击,防止多次重复点击导致多个相同的界面 立即下载
 

【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 3 - 使用缓存来避免重复的下载]

分类: Android   821人阅读  评论(0)  收藏  举报

Redundant Downloads are Redundant[重复下载是冗余的]

  • 减少下载的最基本方法是仅仅下载那些你需要的[美国人的思维还是比较直接,虽然这句话看起来比较搞笑,但是很有道理]。从数据的角度看,我们可以通过传递类似上次更新时间这样的参数来制定查询某些数据。
  • 同样,在下载图片的时候,server那边最好能够减少图片的大小,而不是让我们下载完整大小的图片。

Cache Files Locally [缓存文件到本地]

  • 避免下载重复的数据是很重要的。可以使用缓存机制来处理这个问题。缓存static的资源,例如完整的图片。这些缓存的资源需要分开存放。
  • 为了保证app不会因为缓存而导致显示的是旧数据,请从缓存中获取最新的数据,当数据过期的时候,会提示进行刷新。
  1. long currentTime = System.currentTimeMillis());  
  2.   
  3. HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  4.   
  5. long expires = conn.getHeaderFieldDate("Expires", currentTime);  
  6. long lastModified = conn.getHeaderFieldDate("Last-Modified", currentTime);  
  7.   
  8. setDataExpirationDate(expires);  
  9.   
  10. if (lastModified < lastUpdateTime) {  
  11.   // Skip update  
  12. } else {  
  13.   // Parse update  
  14. }  
  • 使用这种方法,可以有效保证缓存里面一直是最新的数据。
  • 可以使用下面的方法来获取外部缓存的目录:
Context.getExternalCacheDir();
  • 下面是获取内部缓存的方法,请注意,存放在内存中的数据有可能因内部空间不够而被清除。
Context.getCache();
  • 不管是存放在哪里的文件都会在app卸载的时候被清除。

Use the HttpURLConnection Response Cache[使用HttpURLConnection Response缓存]

  • 在Android 4.0里面为HttpURLConnection增加了一个response cache,我们可以使用反射机制开启HTTP response cache,看下面的例子:
  1. private void enableHttpResponseCache() {  
  2.   try {  
  3.     long httpCacheSize = 10 * 1024 * 1024; // 10 MiB  
  4.     File httpCacheDir = new File(getCacheDir(), "http");  
  5.     Class.forName("android.net.http.HttpResponseCache")  
  6.          .getMethod("install", File.class, long.class)  
  7.          .invoke(null, httpCacheDir, httpCacheSize);  
  8.   } catch (Exception httpResponseCacheNotAvailable) {  
  9.     Log.d(TAG, "HTTP response cache is unavailable.");  
  10.   }  
  11. }  
  • 上面的sample code会在Android 4.0以上的设备上开启response cache,同时不会影响到之前的程序。
  • 在cache被开启之后,所有cache中的HTTP请求都可以直接在本地存储中进行响应,并不需要开启一个新的网络连接。
  • 被cache起来的response可以被server所确保没有过期,这样就减少了带宽。没有被cached的response会因方便下次请求而被存储在response cache中。

后记:Cache机制在很多实际项目上都有使用到,实际操作会复杂许多,有机会希望能够分享一个Cache的实例。

学习自:http://developer.android.com/training/efficient-downloads/redundant_redundant.html,谢谢!
Android 防止过快(多次)点击的实现方法 很多用户经常会出现过快且多次点击同一按钮的情况,本篇文章主要介绍了Android 防止过快点击的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 立即下载

相关推荐

Android 防止多次重复点击的三种方法的示例

本篇文章主要介绍了Android 防止多次重复点击的三种方法的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

android的apk更新功能,可防止重复下载

1.对比版本号,校验是否需要更新(省略) 2.弹窗提示 private void checkUpdate() { //TODO 如果版本号一致,清除缓存的 download apk的id // SPUtils.putLong(this, DownloadedApkUtlis.DOWNLOAD_ID, -1); showUpdateDialo...

Xueyuankk的博客 1917

告别转换超时!手把手教你用Allegro2Altium.bat搞定AD21导入Allegro 17.2文件

本文详细介绍了如何使用Allegro2Altium.bat工具解决AD21导入Allegro 17.2文件时的转换超时问题。通过理解转换机制、准备离线环境、执行完整转换流程及高级技巧,帮助工程师高效完成PCB设计文件转换,提升工作效率。

weixin_30378623的博客 421

避免重复下载

原文地址:http://docs.eoeandroid.com/training/efficient-downloads/redundant_redundant.html 重复下载是多余的 减少下载的最基本方法就是只下载你需要的。在数据方面,这意味着实现REST APIs,通过API你可以指定查询条件(使用参数,比如最近更新的时间)来来限制返回的数据。 同样,当我们下载图

Hknock的专栏 1489

TPS5430/54302调试血泪史:从‘烫手山芋’到冒烟烧板,我的5V电源到底怎么了?

本文深入剖析了TPS5430/TPS54302 DCDC电源芯片调试中的常见问题,包括异常发热、电压漂移等,并提供了从热设计到PCB布局的全面解决方案。通过实战案例,揭示了数据手册中未明确的‘潜规则’,帮助工程师避免烧板风险,提升电源系统稳定性。

weixin_28744423的博客 502

RPA实战:手把手教你打造抖音自动养号机器人(含避坑指南)

本文详细介绍了如何利用RPA技术从零构建一个智能化的抖音自动养号机器人。内容涵盖环境准备、核心工具选型、拟人化行为流程设计、代码实现模块拆解,并提供了关键的避坑指南与风控对抗策略,帮助开发者高效、稳定地实现账号自动化运营。

orange的博客 559

Android-Studio自建本地Gradle,避免重复下载的办法

https://services.gradle.org/distributions/ https://blog.youkuaiyun.com/liqz666/article/details/80243836 每次新建项目或修改gradle版本时,都会碰到build过程下载一大堆gradle文件,关键是有时因为被墙导致下载不成功的,其实这是可以避免的,解决办法如下: 1、首先这里有各种版本的gradle,可以按...

yixin8的博客 5478

车窗标定工作流程

标定简单来说就是修改防夹参数来适配对应的车型,所有的防夹的参数在vers_userdef.h文件中定义。#标定内容。

qq_21274991的博客 4271

【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 3 - 使用缓存来避免重复的下载]...

RedundantDownloads are Redundant[重复下载是冗余的] 减少下载的最基本方法是仅仅下载那些你需要的[美国人的思维还是比较直接,虽然这句话看起来比较搞笑,但是很有道理]。从数据的角度看,我们可以通过传递类似上次更新时间这样的参数来制定查询某些数据。 同样,在下载图片的时候,server那边最好能够减少图片的大小,而不是让我们下载完整大小的图片。 ...

mmdev 178

YOLOv5+Astra Pro Plus深度相机:手把手教你实现实时目标检测(附ROS配置技巧)

本文详细介绍了如何将YOLOv5目标检测算法与Astra Pro Plus深度相机结合,构建实时目标检测系统。内容涵盖从硬件选型、环境搭建、ROS配置到YOLOv5部署与深度信息融合的完整流程,并分享了性能优化、避障算法等实战技巧,帮助开发者在机器人视觉等场景中快速实现智能感知应用。

weixin_28292761的博客 387

迪文屏【0】——从零搭建工程:图片显示、文本变量配置与串口数据交互实战

本文以迪文屏T5L系列为例,详细介绍了从零搭建HMI工程的完整流程。内容涵盖硬件软件准备、DGUS工程创建、背景图片显示、文本变量配置,并重点演示了如何通过串口指令实时修改屏幕数据变量,实现动态交互。旨在帮助开发者快速掌握迪文屏开发的核心步骤与数据交互方法。

alpha的博客 349

【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 0 - 章节概览]

Transferring Data Without Draining the Battery [传输数据时不要浪费电量] Dependencies and prerequisites Android 2.0 (API Level 5) or higher You should also read Optimizing Battery Life ...

mmdev 143

【Allegro学习笔记】常规标贴封装创建-0402封装创建实例

摘要&#13; &#13; 本文主要介绍如何使用Allegro制作表面贴装封装。&#13; 所使用的软件&#13; &#13; 使用Allegro制作常规贴片封装主要使用的软件有Pad Designer和Allegro&#13; 1 0402类封装制作&#13; 1.1 0402类封装焊盘分析&#13; 0402封装尺寸图如图1...

Honglong 1万+

【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 2 - 调整定时更新的频率(C2DM与退避算法)]...

Minimizing the Effect of Regular Updates[最小化定时更新操作的副作用] 最佳的定时更新频率是不确定的,通常由设备状态,网络连接状态,用户行为与用户定义明确的偏好而决定。 Optimizing Battery Life(【Android Training - 04】优化电池寿命)这一章有讨论如何根据设备状态来修改更新频率。里面介绍了当断...

编程开发资料库 167

大疆司空 2 私有化部署:FH2、Terra、4G 三大服务区别详解

摘要: 司空2私有版包含三大模块:FH2(核心平台,必选)、Terra(建模算力,需NVIDIA显卡)、4G(内网图传)。FH2是基础,支持设备管理与任务调度;Terra适用于测绘建模场景,依赖GPU算力;4G模块保障复杂环境下的图传稳定性,适合纯内网部署。选择逻辑:先部署FH2,再按需添加Terra(需显卡)或4G(需内网支持),避免资源浪费。

2501_93651177的博客 579

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android 下载重复文件命名规则【android源码解析七】

题记:一个人不能在两个同样的坑里摔倒。       去年4月份的时候,我有一个任务,让我写个下载保存文件的方法,如果文件的名字存在,就加“-1”,如果仍然存在,就在-后面的数字加1,例如:文件名:Keep_On_It.mp3,第一次下载是Keep_On_It.mp3,第二次下载名字就保存成:Keep_On_It-1.mp3,第三次下载名字就保存成:Keep_On_It-2.mp3,第四次下载名字就

大明的android学习之旅 6860

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android中防止重复点击的小技巧

PS: 好久没有写过博客了,不经意间看到这篇在我接触Android不久时写的文章,现在看来确实挺粗糙的(有点看不下去了。。),这里写写我刚想到的另一种思路吧

z_zhaojun的博客 7843

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

避免重复下载,优先使用缓存

在index.html中写死版本号 let gVersionKey = "versionKey"; let gVersionValue = "1.0.30"; var xhr = new XMLHttpRequest(); xhr.open('GET', './manifest.json?v=' + gVersionKey, true); xhr.a...

wulong710的专栏 488

Android开发记录七之文件下载的功能实现

1.文件下载的步骤 用到的类有Uri和HttpURLConnection 首先必须创建一个HttpURLConnection对象

静觅 1273

Android 文件下载三种基本方式

总结了一下Android 文件下载的三种方案

小小情意的博客 1万+

具身智能 2026:启元人形机器人开发者生态的“安卓时刻”来了吗

一个贯穿全文的问题:人形机器人开发者生态,是否正从「封闭垂直」走向「开源平台化」?本文以开源底座的公开数据为标尺,盘点 SDK、URDF、仿真与技能分发的开放程度,并落回启元机器人的开源路径。所有关键数据均标注来源,文末附社区与学堂链接。

在北风吹起的时候加入我们的队伍 在秋雨到来的时候成为彼此的温暖 754

android-ad-cleaner:android免 Root 批量关闭系统开屏与营销推送

橘子,计算机视觉方向工程师,深耕 AIGC 与多媒体处理领域,专注技术实用化落地。本文为原创内容,转载请注明来源与作者。优快云 首发 | 版权所有 © 2026。

下载资源或查看教程前,请务必阅读置顶的《免责声明》 535
上一篇: 【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 2 - 调整定时更新的频率(C2DM与退避算法)]
下一篇: 【Android Advanced Training - 05】传输数据时避免电量的浪费[Lesson 4 - 根据网络类型更改下载模式]
WingSu
博客等级 码龄23年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值