做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中,服务是一种没有用户界面的组件,可以在后台长时间运行,执行任务,如下载或上传数据。在这个场景下,我们可以创建一个IntentService,它是一个单线程的服务,自动管理其工作线程,适合用于执行异步任务...
本压缩包“Android Studio实例代码.zip”包含了多个Android app的实例源码,旨在帮助开发者深入理解并实践Android应用开发。 1. **Android Studio基础** Android Studio基于IntelliJ IDEA,提供了强大的代码编辑、...
在Android平台上,开发一款“一键清理后台”应用可以帮助用户快速释放设备内存,提高系统运行速度。这个功能通常包括清理正在运行的应用程序、终止不必要的服务以及管理后台进程。下面将详细介绍如何在Android 4.4...
本项目“Android-Androidapp网络请求时候一个通用的加载页面”关注的就是在网络请求过程中如何提供一个友好的用户体验,具体表现为一个覆盖整个界面的Loading页面。这种加载页面在应用启动、首次加载数据或者进行...
在Android开发中,Service是应用程序组件之一,它可以在后台长时间运行,即使用户界面不在活动状态。Service主要用于执行长时间运行的操作,如播放音乐、处理网络事务等。本话题将深入探讨如何在Android Studio中...
标题中的“基于百度大脑的AndroidAPP后端是SpringBoot框架”揭示了这个项目是一个结合了百度人工智能服务的Android应用程序,其后端系统采用的是SpringBoot技术。这涉及到的知识点包括: 1. **百度大脑**: 百度大脑...
服务是Android应用程序组件之一,它可以在后台长时间运行,即使用户界面已经关闭。创建一个名为`AutoStartService`的服务,需要在`AndroidManifest.xml`中声明: ```xml <service android:name=".AutoStartService...
本示例探讨了如何实现Android客户端与基于Struts、Hibernate和Spring的后台服务器之间的数据交互,使用JSON作为数据传输格式。对于初学者来说,这是一个很好的起点,因为它涵盖了多个关键的技术栈。 首先,让我们...
智能家居Android APP源码是一个开发智能家居控制系统的项目,它允许用户通过Android设备远程管理和监控家中的智能设备。这个APP源码提供了实现智能家居系统的核心功能,包括设备发现、连接、控制、状态更新以及用户...
【Android Studio 仿美团App开发详解】 在移动应用开发领域,Android Studio是Google推出的一款强大的集成开发环境(IDE),广泛用于构建Android应用程序。本项目旨在通过Android Studio来模仿美团App的功能,包括...
在Android应用开发中,服务(Service)是一种非常重要的组件,它允许应用程序在后台执行长时间运行的操作,即使用户已经离开了应用程序的界面。这个“android app 启动后台服务的小demo”显然是一个示例项目,用于...
Qt for Android 是一个开源框架,它允许开发人员使用 Qt 编程环境来创建原生的 Android 应用程序。这个框架结合了 Qt 的强大功能和 Android 的广泛设备覆盖,为开发者提供了一种跨平台的解决方案,可以在多个操作...
源码可能包含了对内存、CPU、网络和启动时间的优化措施,如使用Glide或Picasso加载图片,使用AsyncTask进行后台任务,以及使用ProGuard进行代码混淆。 以上是对Android 商城APP源码的一般性分析,具体实现将根据...
在Android应用开发中,实现应用内部更新和版本升级是一项重要的功能。这允许开发者在发布新版本时,确保用户能够及时获得最新的修复、功能和优化,提高用户体验。在本教程中,我们将深入探讨如何在Android应用中集成...
"ChameleonMiniApp变色龙硬件Android APP"是一款专为Android设备设计的应用程序,它能够与硬件设备通过OTG(On-The-Go)技术进行连接,实现设备间的交互。这款APP未经编译,用户需要自行在手机上进行安装。下面我们...
"Android App自动更新app源码"指的是提供了一种实现应用自动检查、下载和安装更新的代码实现。这个压缩包文件"auto-update-service-develop"很可能包含了实现这一功能的完整服务组件及相关资源。 在Android系统中,...
- 客户端APP通过网络请求获取该版本信息,比较本地已安装版本与服务器的最新版本,判断是否需要更新。 2. **显示更新提示**: - 如果发现有新版本,向用户展示更新提示,包括新版本的特性描述和更新按钮。 3. **...
但是,对于静默安装,我们通常是在设备管理器(Device Admin)环境下进行,这样可以绕过用户权限请求。 1. **设备管理器权限**:为了实现静默安装,应用需要获取`DEVICE_ADMIN_RECEIVER`权限。首先,你需要创建一个...
新闻APP后台管理系统是移动应用开发中的重要组成部分,它负责处理新闻数据的发布、管理、更新以及用户行为的分析。在本文中,我们将深入探讨新闻APP后台管理涉及的关键技术和知识点。 首先,后台管理系统的核心功能...