android入门开发教程之网络性能的优化

我在麦子学院上android开发的时候,麦子学院android开发老师讲到Android开发过程中经常会涉及到性能优化的问题,应该从基础、网络、测试等各个层面进行整合优化。现在咱们聊聊Android开发之网络性能的优化。

1)避免频繁网络请求
访问server端时,建立连接本身比传输需要跟多的时间,如非必要,不要将一交互可以做的事情分成多次交互(这需要与Server端协调好)。有效管理Service 后台服务就相当于一个持续运行的Acitivity,如果开发的程序后台都会一个service不停的去服务器上更新数据,在不更新数据的时候就让它sleep,这种方式是非常耗电的,通常情况下,可以使用AlarmManager来定时启动服务。如下所示,第30分钟执行一次。

AlarmManageralarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);Intent intent = new Intent(context, MyService.class);PendingIntentpendingIntent = PendingIntent.getService(context, 0, intent, 0);long interval = DateUtils.MINUTE_IN_MILLIS * 30;long firstWake = System.currentTimeMillis() + interval;am.setRepeating(AlarmManager.RTC,firstWake, interval, pendingIntent);

2)数据压缩
传输数据经过压缩目前大部门网站都支持GZIP压缩,所以在进行大数据量下载时,尽量使用GZIP方式下载,可以减少网络流量,一般是压缩前数据大小的30%左右。

HttpGet request = new HttpGet("http://。。。。。");HttpResponseresp = new DefaultHttpClient().execute(request);HttpEntity entity = response.getEntity();InputStream compressed = entity.getContent();InputStreamrawData = new GZIPInputStream(compressed);

3)使用线程池
线程池,分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待。

4)选择合适的数据格式传输形式

其中Tree Parse 是DOM解析 Event/Stream是SAX方式解析。
很明显,使用流的方式解析效率要高一些,因为DOM解析是在对整个文档读取完后,再根据节点层次等再组织起来。而流的方式是边读取数据边解析,数据读取完后,解析也就完毕了。在数据格式方面,JSON和Protobuf效率明显比XML好很多,XML和JSON大家都很熟悉。从上面的图中可以得出结论就是尽量使用SAX等边读取边解析的方式来解析数据,针对移动设备,最好能使用JSON之类的轻量级数据格式为佳。

5)设置超时时间

设置连接超时时间和响应超时时间。Http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的HttpResponse浏览部分数据,实现离线阅读。

关于android 入门开发教程请前往:http://www.maiziedu.com/course/android/

时间: 2024-10-25 21:21:41

android入门开发教程之网络性能的优化的相关文章

Android WiFi开发教程(一)——WiFi热点的创建与关闭

相对于BlueTooth,WiFi是当今使用最广的一种无线网络传输技术, 几乎所有智能手机.平板电脑和笔记本电脑都支持Wi-Fi上网.因此,掌握基本的WiFI开发技术是非常必要的.本教程将围绕一个小Demo初步与大家一同探讨WiFi开发. 先上效果图   Demo功能比较简单,四个按钮.两个文本和一个列表.功能主要有创建WiFi热点,关闭WiFi热点,搜索WiFi,连接WiFi,数据通讯.源码会在教程结尾提供. 本章节主要介绍WiFi热点的创建和关闭 需要用到的权限 <uses-permissi

ASP.NET Aries 入门开发教程4:查询区的下拉配置

背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式化配置 #是否 PS:格式化配置除了用来格式化表格的内容,同样也会下拉进行格式化. 效果: 那“#是否”是哪里来的? 在配置维护里来的,对于固定的选项,统一在这里配置: 2:查询框下拉能不能多选? 配置格式规则即可:multiple属性 效果: 3:查询框下拉能不能级联? 配置格式化规则指向上一级即

ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 #是否,已经可以看到效果了. 对于分类ID列,通常显示的是分类名称,而不是ID值. 可是分类名称不在文章表里,在文章分类表,怎么关联格式化呢? 我们有文章分类表: 所以我们写个下拉配置: 然后在配置表头里把它配置上: 效果: PS:通过自定义语句来翻译下拉项的注意事项: 1:翻译项的数量在100以下,

Django的入门开发教程

初识Django  Django是高级Python Web框架,鼓励快速开发和简洁实用的设计.它由经验丰富的开发人员构建,可解决Web开发的大部分麻烦,因此您可以专注于编写应用程序而无需重新发明轮子.从本质上来说,Django是Python编写的一组类库,用Django开发站点就是使用这些类库编写.采用了MVC设计模式,即M模型(models),V视图(views),C控制器(controls). 安装开发工具 windows系统下安装开发工具 1.python下载地址:https://www.

Android应用开发中对Bitmap的内存优化

在Android应用里,最耗费内存的就是图片资源.而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常.所以,对于图片的内存优化,是Android应用开发中比较重要的内容. 1) 要及时回收Bitmap的内存 Bitmap类有一个方法recycle(),从方法名可以看出意思是回收.这里就有疑问了,Android系统有自己的垃圾回收机制,可以不定期的回收掉不使用的内存空间,当然也包括Bitmap的空间.那为什么还需

android官方开发教程解释(一)

最近准备系统学一下android开发,这里不会照搬原文,只会针对教程中一些难以理解的部分进行解释,我只是个菜鸟. 在教程第一章——入门基础里面,讲解android主题的那个小节,大概会有以下的代码: <!-- 位置 res/values/themes.xml --> <?xml version="1.0" encoding="utf-8"?> <resources> <!-- 用于程序或活动的主题 --> <st

ASP.NET Aries 入门开发教程1:框架下载与运行

背景: 鉴于框架的使用者越来越多,文档太少,不少用户反映框架的入门门槛太高. 好吧,再辛苦下,抽时间写教程吧! 步骤1:下载框架源码 开源地址:https://github.com/cyq1162/Aries 建议用SVN或Git下载,因为随时可以更新.(打包Zip下的载的,更新升级不方便) 步骤2:F5 运行起来 数据库默认是指向文本数据库,所以可以直接运行,看到登陆界面: 默认用户名密码是:admin,111111,已经写在html中了. 点登陆,如果提示如下: 那你就打开web.confi

Android入门笔记 - 数据存储 - 网络

网络作为android的数据存储的一种,那么极大的扩大了app的使用范围,因为任何信息我们都可以从网络上获取,试想一下我们自己搭建一个服务器,然后通过app向服务器请求数据,那么要修改显示数据的时候,我们只需要修改服务器上的数据,app只是一个显示载体.目前确实有很多app是这样开发的,在app内部可以嵌套一个浏览器,当然也可以使用android自带的webview,那么开发就可以分开了,android的做android的部分,网站的做网站的部分,极大的提高了开发效率,而且也增加了app的功能和

Android WebView 开发教程

1.WebView的使用 (a). 创建WebView的实例加入到Activity中 WebView webview = new WebView(this); setContentView(webview); 或者在xml中配置WebView <Webview android:layout_width="match_parent" android:layout_height="match_parent" > </Webview> (b). 访