- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如果我正在构建一个智能手机应用程序,该应用程序会定期从服务器下载数据,并且还会间歇性地上传数据(分析、广告等),我可以做些什么来最大限度地减少这些传输对电池生命周期的影响?
使用 radio (2G、3G、LTE 等)进行传输对电池的影响尤为显着。 radio 的电源使用情况是否会影响我选择何时、什么以及如何传输数据,以尽量减少对电池生命周期的影响?
最佳答案
This answer is summarized from The Android Training class, Transferring Data Without Draining the Battery which explains how to minimize the battery life impact of downloads and network connections, particularly in relation to the wireless radio.
In particular Optimizing Downloads for Efficient Network Access explains the wireless radio state machine in some detail and goes on to explain how your app's connectivity model should interact with it to minimize the related battery drain.
radio 状态机
每次您创建新的网络连接时, radio 都会切换到全功率状态。这种转换通常需要大约 2 秒,因此为了最大限度地减少延迟, radio 会引入延迟以推迟向较低能量状态的转换。
传输完成后,典型的 3G radio 将保持全功率 5 秒钟,然后在低能量状态再等待 12 秒钟,然后进入待机状态。每次您建立连接时, radio 总共会消耗近 20 秒的电量。
这种方法会导致在现代智能手机操作系统上运行的应用程序效率低下,因为应用程序在前台(延迟很重要)和后台(应优先考虑电池生命周期)运行。
解决方案
将下载对电池的影响降到最低的关键是要认识到传输频率比下载大小的影响更大。实际上,预取和排队/bundle 传输特别有效。
知道每次启动连接时都可能导致对讲机耗电近 20 秒,因此 bundle 数据传输非常重要,这样您就可以有效地进行应在相似时间内发生的相移传输窗口,以便您在每个传输 session 期间传输尽可能多的数据,以最大限度地减少 session 数量。
同样,预取允许您通过单个连接以全容量在单个突发中下载给定时间段内可能需要的所有数据。通过预先加载传输,您可以减少下载数据所需的 radio 激活次数、延长电池生命周期、改善延迟、降低带宽并缩短下载时间。
但是,预取还会带来通过下载未使用的数据而增加电池消耗和带宽使用的风险。
预取的积极程度取决于正在下载的数据的大小以及被使用的可能性。一般来说,预取数据是一种很好的做法,这样您只需要每 2 到 5 分钟再启动一次下载,大约 1 到 5 兆字节。
重用现有网络连接通常比创建新网络连接更有效。重用连接还可以让网络更智能地对拥塞和相关的网络数据问题使用react。
关于android - 减少通过智能手机 radio 下载内容的应用程序对电池的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950379/
我是 Bison 解析的新手,我无法理解它是如何工作的。我有以下语法,其中我保留了最低限度的语法来突出问题。 %left '~' %left '+' %token T_VARIABLE %% star
我链接了 2 个映射器和 1 个缩减器。是否可以将中间输出(链中每个映射器的 o/p)写入 HDFS?我尝试为每个设置 OutputPath,但它似乎不起作用。现在,我不确定是否可以完成。有什么建议吗
我正在编写一些代码来管理自定义磁盘文件结构并将其同步到未连接的系统。我的要求之一是能够在实际生成同步内容之前估计同步的大小。作为一个简单的解决方案,我整理了一个包含完整路径文件名的 map ,作为高效
我来自一个 SQL 世界,其中查找由多个对象属性(published = TRUE 或 user_id = X)完成,并且有 任何地方都没有加入 (因为 1:1 缓存层)。文档数据库似乎很适合我的数据
在 R 中,我有一个整数向量。从这个向量中,我想随机减少每个整数元素的值,以获得向量的总和,即初始总和的百分比。 在这个例子中,我想将向量“x”减少到向量“y”,其中每个元素都被随机减少以获得等于初始
我发现自己遇到过几次我有一个 reducer /组合 fn 的情况,如下所示: def combiner(a: String, b: String): Either[String, String]
Ubuntu 12.04 nginx 1.2.4 avconv版本 avconv version 0.8.10-4:0.8.10-0ubuntu0.12.04.1, Copyright (c) 200
我是 R 编程语言的新手。我有一个包含 2 列(ID 和 Num)的数据集,如下所示: ID Num 3 8 3 12 4 15 4 18 4
我正在使用高阶函数将函数应用于向量中的每个元素并将结果作为标量值返回。 假设我有: v = c(0, 1, 2, 3, 4, 5, 6, 7, 8) 我想计算以左边 5 个整数为中心的所有这些整数的总
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
这个问题在这里已经有了答案: How to write the dataframes in a list to a single csv file (2 个回答) 5年前关闭。 我正在尝试使用 Red
刚开始学习CUDA编程,对归约有些迷茫。 我知道与共享内存相比,全局内存有很多访问延迟,但我可以使用全局内存来(至少)模拟类似于共享内存的行为吗? 例如,我想对长度恰好为 BLOCK_SIZE * T
我经常使用OptiPNG或pngcrush减小PNG图像的文件大小。 我希望能够从.NET应用程序中以编程方式执行此类操作。我正在动态生成要发送到移动设备的PNG,因此我想减小文件大小。 图像质量很重
减少和减少让您在序列上累积状态。 序列中的每个元素都会修改累积的状态,直到 到达序列的末尾。 在无限列表上调用reduce 或reductions 有什么含义? (def c (cycle [0]))
这与R: use the newly generated data in the previous row有关 我意识到我面临的实际问题比我在上面的线程中给出的示例要复杂一些 - 似乎我必须将 3 个
有什么办法可以减少.ttf字体的大小?即如果我们要删除一些我们不使用的glyps。 最佳答案 使用Google Web Fonts,您可以限制字符集,例如: //fonts.googleapis.co
我需要在iOS中制作一个应用程序,在她的工作过程中发出类似“哔”的声音。 我已经使用MPMusicPlayerController实现了与背景ipod的交互。 问题: 由于来自ipod的音乐音量很大,
我有一个嵌套 map m,如下所示: m = Map("电子邮件"-> "a@b.com", "背景"-> Map("语言"-> "英语")) 我有一个数组arr = Array("backgroun
有什么原因为什么不应该转发map / reduce函数中收到的可写内容? 我的意思是-每个map / reduce函数都有一个可写的键/值,并可能发出一个键/值对。如果我想执行一些过滤,我应该只发出接
假设我有一个数据列表 val data = listOf("F 1", "D 2", "U 1", "D 3", "F 10") 我想执行每个元素的给定逻辑。 我必须在外部添加 var acc2 =
我是一名优秀的程序员,十分优秀!