位置: 编程技术 - 正文

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

  • 进项税额转出的例题
  • 工资个税计算公式2020
  • 纳税申报流程视频教程
  • 怎么在电子税务局添加银行账户
  • 一般纳税人的发票抵扣进项税额
  • 对方只能开普票怎么办
  • 在分公司签的合同能转到总公司吗
  • 金蝶数量金额式明细账怎么查看
  • 投资企业应确认投资收益的有
  • 免征增值税的免税政策
  • 销售人员出差补助计入什么科目
  • 评估价值高于账面价值怎么收税
  • 纳税申报表多缴了怎么办
  • 记名预付卡不得设置有效期不可赎回
  • 文化事业建设费的征收范围
  • 注销时分公司欠款怎么办
  • 咨询费可以入账吗
  • 2017年8月1日到现在多少天
  • 个人缴纳的住房公积金可以提现吗
  • 统一社会信用代码证
  • 只有发票才能税前扣除吗
  • 机械租赁有什么机械
  • 无法访问移动网络怎么办
  • 利润的计算公式excel
  • SwiftBTN.exe - SwiftBTN是什么进程 有啥作用
  • 和linux
  • vue3+vite在main.ts或者main.js文件中引入/App.vue报错(/App.vue不是模块)
  • 旅游 服务业
  • vite配置详解
  • PHP:imagefontheight()的用法_GD库图像处理函数
  • 个人专利奖励是什么意思
  • 普尔曼多少钱
  • 增值税会自动申报吗
  • openpose的输出
  • js前端路由
  • php怎么设置图片的大小
  • 员工福利费会计分录 最新
  • c+c#
  • 未入账的发票可以抵扣吗
  • 参展费可以抵扣吗
  • 织梦怎么添加相关
  • opencv python
  • 【MongoDB for Java】Java操作MongoDB数据库
  • 购买固定资产未入账
  • 利润分配转作股本的股利属于什么科目
  • pos机收款不开票怎么做账
  • 房产税的纳税义务人是征税范围内房屋产权所有人
  • 持有至到期投资减值准备
  • 应纳税额和已缴税额一样
  • 补缴税款需要交滞纳金吗
  • 新会计制度固定资产折旧账务处理
  • 购买方已认证销售方能开红字信息表吗
  • 发票入账抵扣什么意思
  • 资金帐薄印花税是指什么
  • 加油站固定资产折旧方法
  • 主营业务收入核算项目组合表
  • 没有申报未开票收入怎么办
  • 购买银行承兑汇票现金流量表怎么填
  • 增值税普通发票查询
  • 医院床单被套尺寸
  • 商品流通企业有哪些企业
  • 关于存储过程的描述
  • mysql_info
  • win xp 添加网络打印机
  • Ubuntu安装VMware tools
  • Win7的sysprep工具怎么用 win7自带sysprep工具重置系统方法
  • 计算机的硬盘
  • 2021年win10累积更新
  • linux系统如何禁用光驱
  • bootstrap4和3
  • jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
  • virtualbox装linux
  • Node.js中的什么模块是用于处理文件和目录的
  • jquery validate表单校验html
  • 终于实现的图片
  • js new()
  • [置顶]马粥街残酷史
  • jquery 购物车
  • 税务解除非正常户罚款多少
  • 江苏省定额规则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设