`
zhaoImpulse
  • 浏览: 79307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android的app的后台请求90%时间过大的研究

阅读更多

       做android开发的时候,也要负责后台的api,90%和95%时间是个硬性指标,需要不断提高。最近发现90%时间长了很多,但是只限于nginx记录的时间,java后台记录的api90%时间并没有明显变化。于是就分析了一下。

 

        90%时间,nginx和后台时间差距很大,只在post请求的url中出现,get请求的url则没有出现这种情况。post请求时要上传数据包,但是由于2G网络的问题,tcp连接经常会出现丢包的问题,所以就可能重传好多次,这就使得客户端和nginx服务器建立连接后,要经过很长时间(相对于后台时间来说)才能把数据包完整提交上去。这种丢包情况,在有线网络和wifi中是几乎不会出现的(怪不得我在电脑和连着wifi的手机上测试了很多次都没有重现),只有2G环境下移动应用才会出现。而且由于是小概率事件,所以不影响50%时间,但会对90%时间和95%时间造成很大的影响。

 

         解决方案有两种,一个是尽量的把post请求转换成get请求;还有就是尽量缩小上传的数据包,这样丢包发生的概率就小一些。

         第一种有待商榷,因为get获取数据,post提交数据,这种规范不能违背,所以只能说把一些应该用get,但是却写成post的请求改回来。
          缩小数据包,这个只能尽量处理。现在数据提交的时候,都会经过一层gzip压缩,但是由于之前的修改,所有post都用的是MultipartRequest请求,之所以这样,是因为该请求既可以传递普通参数,又可以上传文件,所以方便使用。但这周调研后发现,MultipartRequest,要比普通的requet请求上传更多的数据量(每个多大约200+字节),这是因为MultipartRequest支持各种各样的数据形式,相应的也要传递更多的配置信息(详细的可以看下MultipartEntity的源码)。所以解决方案是,只有post请求用到上传文件的时候,才使用Multipart请求;其它的都是用默认的,只能传递string的请求。 
          以前都是在做web开发,现如今做移动开发,很多思想和问题都是第一次接触,需要换个角度来思考问题了。
分享到:
评论

相关推荐

    Android-app.rar

    Android例子源码可以通过网络请求内容的自定义列表选择Dialog Android例子源码图片旋转缩放加盖水印透明倾斜扭曲处理 Android例子源码实现Windows8风格的Dialog Android例子源码强大的listview效果集合项目 Android...

    Android代码-一个仿拉手团购的购物App,采用Bmob实现后台

    一个仿拉手团购的购物App,采用Bmob后台实现短信验证码注册、登录、收藏、订单管理、自动更新等功能,数据抓取自拉手团购 Library NoHttp(网络请求) zxing(二维码扫描) Fresco(图片加载) Andfix(热修复) ...

    基于Android 移动基础原生开发的一个智慧城市题材的简易app,app数据全部使用okhttp3请求于后台服务器!.zip

    基于Android 移动基础原生开发的一个智慧城市题材的简易app,app数据全部使用okhttp3请求于后台服务器!.zip

    Android App后台服务报告工作状态实例

    本节讲运行在后台服务里的工作请求,如何向发送请求者报告状态。推荐用LocalBroadcastManager发送和接收状态,它限制了只有本app才能接收到广播。 从IntentService汇报状态 从IntentService发送工作请求状态给其他...

    APP+java后台调用微信支付

    本项目主要是集成微信支付,android APP请求java服务器获取预支付订单后调起微信支付。代码简单,亲测可用!

    安卓登录注册相关-android实现登陆和注册的前后台框架利用http的post和get进行请求请求方式已经封装完善.rar

    android实现登陆和注册的前后台框架,利用http的post和get进行请求,请求方式已经封装完善.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android AlarmManager实现定时循环后台任务

    使用场景:项目需要app每隔一段时间就去服务端请求一次接口,从而更新本地保存的信息。 AlarmManager简介 AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。简单的说...

    android前端+java后台调用微信支付

    本项目主要是集成微信支付,android请求java服务器获取预支付订单后调起微信支付

    android app widget小部件

    里面是一套完整的列表显示及刷新的小部件,虽然没有后台请求,但是可以自己改造下

    Android二手交易平台源码

    1、系统架构:Dagger2+MVP分层,完成了一次正常的retrofit下的天气信息的请求,其余请求后台均基于Bmob云后台,图片在水平方向可滚动 2、使用技术:Dagger2、MVP、Retrofit2、Okhttp3、Butterknife、rxjava、Bmob ...

    百套大作业-Android商城.zip

    网络购物已经成为人们生活中不可或缺的一部分了,然后移动端的网购流量占据了网购总流量的70%以上,足以说明APP移动端的网购占据了人们日常成活中的大部分闲余时间。由于在线商城能APP基于移动端的优势,能够...

    基于Android的无人书店管理 (源码 + 说明文档 + 演示视频)

    基于Android的无人书店管理 (源码 + 说明文档 + 演示视频) app: 1.列表采用了recyleview进行了展示,并且用adapter进行了适配修改 2.界面开发方式采用了mvc方式开发 3.开发熟悉了安卓activity的相关属性 4.部分...

    基于Android的学生信息管理系统

    这个系统难度不大,但是安卓的项目本来就少,这个项目耶包含了基本的增删改查,并且能实现后台与App的交互,所以这一个星期中还是学了很多东西的,如Android的Fagment、Activity、手动实现分页、HTTP请求和响应,...

    详解基于Android App 安全登录认证解决方案

    近几年移动互联网的高速发展,智能手机的使用用户呈现爆炸性增长,手机终端上的App 种类繁多,大多数App 都需要与后台系统进行交互,交互的第一步需要进行登录认证,过于简单的认证方式可能被破解从而造成用户信息的...

    Android应用程序保持后台唤醒(使用WakeLock实现)

    但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,Android系统中CPU会保持在一个相对较低的功耗状态。针对前面的例子,收到新消息必定有网络请求,而网络...

    android 后台定时提醒(Service,AlarmManager的使用)

    考虑到自己每次在敲代码或者打游戏的时候总是会不注意时间,一不留神就对着电脑连续3个小时以上,对眼睛的伤害还是挺大的,重度近视了可是会遗传给将来的孩子的呀,可能老婆都跟别人跑了。 于是,为了保护眼睛,笔者...

    android自动更新

    一、可从后台主动控制本地app强制更新,主要适用场合是某个版本有bug,会严重影响用户的使用,此时用这种模式,只要用户打开app,提醒强制更新,否则不能进入app; 二、根据后台返回受影响的版本号,可控制多个版本...

    基于Android的老人用药提醒软件开发

    系统的实现包括APP前端,APP后台,数据库设计等几个方面。客户端的使用角色包括老人本身和其子女,可以设置用药提醒等等内容,提供便捷简单的操作界面。服务端主要在后台做一些数据处理和分析工作。数据库则是用户...

    基于stm32+树莓派+安卓App设计的智能家居系统,可以扫码添加设备,控制亮灭的灯,控制开关的窗帘,树莓派主控,内含完整源代码

    使用RaspBerry Pi4运行Fast API后台,处理Android App发出的Http请求,并将请求转换为对应的指令通过ZigBee模块发送到家居终端,同时使用多线程监听接收家居终端发送回来的ZigBee回令,通过指令顺序标识 家居终端 ...

    Android代码-MyOkHttp

    > 对Okhttp3进行二次封装,对外提供了POST请求、GET请求、PATCH请求、PUT请求、DELETE请求、上传文件、下载文件、取消请求、Raw/Json/Gson返回、后台下载管理等功能. 版本更新记录 版本更新记录 参考文献 对于Okhttp3...

Global site tag (gtag.js) - Google Analytics