位置: 编程技术 - 正文

Developing for Android, IV: The Rules: Networking

编辑:rootadmin

推荐整理分享Developing for Android, IV: The Rules: Networking,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

This section covers practices around network behavior of applications.

Don’t Over-Sync

Sending data to and from the cloud is one of the largest consumers of battery. The problem is not that any particular network transaction kills the device, but rather the sheer number of background applications and services making these requests and the side effect on the inability of the device to sleep (or for the radio to enter low power mode) for any reasonable length of time causes a significant drain on the battery in general. If you don’t need the data immediately, don’t get it. If you need the data sometime in the future, batch it up with other system requests with JobScheduler or GCM Network Manager.

Here are some general tips for avoiding over-syncing:

Use Google Cloud Messaging (GCM). Do not establish new persistent connections to the device.Use JobScheduler (on API and later) or GCM Network Manager(which works across many releases, using JobScheduler internally on API and later) to benefit from batching and coalescing from other sync requests on the device. These APIs can also be used to ensure that some operations only happen when the device is in an appropriate idle state.Do not poll. Ever.Only sync what you need to. Data syncing has been found to be one of the biggest culprits of battery usage and overall system health, so app developers need to think carefully about the type of data that really needs to be synced, as well as how often it should be synced for a good user experience.See these reference articles for more information and strategies:Minimizing the Effect of Regular Updates, Transferring Data Using Sync Adapters, and Optimizing Downloads for Efficient Network Access.Avoid Overloading the Server

When a server request fails, use exponential back-off techniques to avoid hammering the server with constant, repeated requests. Also, never synchronize against wall-clock time to avoid problems with the server being hit by large loads at these absolute times.

Don’t Make Assumptions about the Network

When making network calls, be sure to call NetworkInfo.isConnected() to ensure connectivity.

Developing for Android, IV: The Rules: Networking

Also, it is not possible to know when or if a network request will actually succeed, which is yet another good reason to not make network requests on the UI thread or in other places requiring fast or synchronous behavior.

Develop for Low End Networks

The Develop for the Low End rule in the Performance chapter is as true for network performance as it is for raw device hardware performance. If your application is dependent upon network performance for content (such as a video or music application), then you should develop on a device that has a slower network connection, just to understand the implications in markets that do not have easy access to fast network speeds. If your application can get much of the content across with text (such as messaging or social apps), it is important to be able to make that work without being dependent on slower network times for associated media components. 2G networks, in particular, are important to test against since this is a slow network speed that is very prevalent in some markets.

Design Back-End APIs to Suit Client Usage Patterns

There is a tendency in back-end applications to provide a general purpose API for all of their clients. Although this is a reasonable strategy for back-end systems, it is not good for the client because the application ends up transferring and processing a lot of data on a small device while some calculations could be made on the server.

For example, if your application displays a feed of mixed content, make sure the client can fetch that information in a single request and that the returned data is suitable for caching in pieces. You generally want your client to be able to identify entities so that it can persist them and also avoid duplicates of the same objects in memory.

While doing this, many APIs return hierarchical data where all relations are denormalized. Although this approach is preferred for most web clients, it is not good for mobile clients where persisting data and serving it from disk is important.

The more information the client has about the data it is displaying, the more efficient it can be. The application can make a careful selection of what to cache, what to prune, and how to invalidate layout when new data arrives. Treating the client application like a simple HTML renderer will miss out on all of these advantages.

Developing for Android, III: The Rules: Performance OnAndroid,performanceandmemoryarecloselyintertwined,sincethememoryfootprintoftheoverallsystemcanaffecttheperformanceofalloftheprocesses,andsincethegarbagecollectorcanhaveasignificantimpactonruntimeper

AsyncTask 转载自

android中解析doc、docx、xls、xlsx格式文件 解析doc,要tm-extractors-0.4.jar这个包解析xls,要jxl.jar这个包下载jxl.jarpublicstaticStringreadDOC(Stringpath){//创建输入流读取doc文件FileInputStreamin;Stringtext=null;//Envir

标签: Developing for Android, IV: The Rules: Networking

本文链接地址:https://www.jiuchutong.com/biancheng/384185.html 转载请保留说明!

上一篇:Android入门——电话拨号器和四种点击事件(android零基础入门教程)

下一篇:Developing for Android, III: The Rules: Performance

  • 增值税退税账务处理最新规定
  • 如何结转应交未交或多交增值税?
  • 发票校验码被章盖住了
  • 社保本期工资总额是怎么填的
  • 公司团建取得的进项发票可以抵扣增值税吗
  • 品牌对企业收益的影响
  • 土地使用税延期还延续吗
  • 房地产开发项目手册备案
  • 复式记账法哪本书提到过?
  • 销售退回所得税差异怎么处理
  • 企业自用房要交契税吗
  • 新公司前几个月发工资
  • 从联营企业分回利润可以在税前扣除吗
  • 企业为员工承担个人所得税
  • 股息红利个人所得税扣税失败
  • 购买软件的增值税可以抵扣吗
  • 一般纳税人能开3%的发票吗
  • 印花税滞纳金计入什么科目
  • 小规模纳税人自开专票
  • 税务局工会经费新举措
  • 收到免税发票会影响税负吗
  • 退了货的发票还能用吗
  • 支付征地补偿款怎么开具增值税发票
  • 工商企业年报网上申报时间
  • mac文本文件
  • 现金流量表的内涵及其编制基础
  • 期末留抵税额的减值
  • Win10 20H2 Beta 预览版 19042.782正式推送(附更新内容)
  • php string
  • 子公司增发股票母公司为什么会产生利得
  • PHP:move_uploaded_file()的用法_Filesystem函数
  • 支票怎么用,开了支票立即可以取钱吗
  • 坏账准备的会计科目
  • 劳务佣金合法吗?
  • 资产减值损失和存货跌价准备有什么区别
  • ElementUI中<el-form>标签中 ref、:model、:rules 的作用
  • KITTI数据集可视化(一):点云多种视图的可视化实现
  • 增值税报税后多久缴纳期限
  • 利润分配反映什么
  • 工资的会计账务处理
  • 残疾人加计扣除工资按应发还是实发
  • 专用发票货物名称开错可以吗
  • 工会经费缴纳方式的文件
  • 物业公司收取的电费怎么确认收入
  • 制造费用属于哪一类会计科目
  • 含税含运费价格,运费谁出
  • 差额增值税发票和全额增值税发票
  • 利息收入填在汇算清缴哪里
  • 跨年发票账务处理怎么做
  • 工作服入什么科目类别
  • 更衣柜属于什么费用
  • 员工出差报销的餐费怎么下账
  • 个人如何开增值税普通电子发票
  • 补缴以前年度企业所得税如何做账
  • 无息的银行承兑汇票
  • 设备升级是什么意思
  • 收到的业务赔偿如何入账
  • 租地青苗补偿问题
  • 外资企业贷款条件
  • 哪里还有备用金可以借
  • 水利建设基金筹集和使用管理办法
  • 从银行取现金是什么凭证
  • 利润所属科目
  • MySQL-tpch 测试工具简要手册
  • sqlserver合并脚本工具
  • 华尔街日报体
  • 快捷键f1怎么用不了
  • linux防止攻击
  • win10更新中重启会怎么样
  • bootstrap-treeview.js
  • css网站布局实录 pdf
  • unity 扩展编辑器
  • 3d图形学原理
  • js的事件绑定
  • jQuery中trigger()与bind()用法分析
  • python 解析
  • 深圳地税电子税务局
  • 上市公司的税务风险大吗
  • 应交税费应交增值税已交税金是什么意思
  • 亿企赢工作前景怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设