安卓网络优化(5)
2015-11-06 23:47
495 查看
1、避免频繁网络请求
有效管理Service 后台服务就相当于一个持续运行的Acitivity,
如果开发的程序后台都会一个service不停的去服务器上更新数据,在不更新数据的时候就让它sleep,这种方式是非常耗电的,
解决:
通常情况下,可以使用AlarmManager来定时启动服务。
实验:30分钟执行一次:
2、数据压缩
在进行大数据量下载时,尽量使用GZIP方式下载,可以减少网络流量
实现的代码:
//网络数据下载:请求的url
HttpGet request =
new HttpGet (“http://example.com/gzipcontent“);
//接受请求下载
HttpResponse resp =
new DefaultHttpClient().execute(request);
HttpEntity entity = response.getEntity();
InputStream compressed = entity.getContent();
InputStream rawData = new GZIPInputStream(compressed);
long start = System.currentTimeMillis();
// 你想要测试的方法
long duration = System.currentTimeMillis() - start;
“`
(2)可以在DDMS中查看下Logcat的VM释放内存情况,大概模拟下那些地方可以缓存数据或改进算法的
(3)利用traceview和monkey等工具测试应用。
(7)利用layoutopt和ninepatch等工具优化视图。
有效管理Service 后台服务就相当于一个持续运行的Acitivity,
如果开发的程序后台都会一个service不停的去服务器上更新数据,在不更新数据的时候就让它sleep,这种方式是非常耗电的,
解决:
通常情况下,可以使用AlarmManager来定时启动服务。
实验:30分钟执行一次:
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, MyService.class); PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); //设定的时间 long interval = DateUtils.MINUTE_IN_MILLIS * 30; long firstWake = System.currentTimeMillis() + interval; //管理器的执行(30分钟执行一次服务的更新) am.setRepeating(AlarmManager.RTC,firstWake, interval, pendingIntent);
2、数据压缩
在进行大数据量下载时,尽量使用GZIP方式下载,可以减少网络流量
实现的代码:
//网络数据下载:请求的url
HttpGet request =
new HttpGet (“http://example.com/gzipcontent“);
//接受请求下载
HttpResponse resp =
new DefaultHttpClient().execute(request);
HttpEntity entity = response.getEntity();
InputStream compressed = entity.getContent();
InputStream rawData = new GZIPInputStream(compressed);
**3、使用线程池** 下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待。 **4、选择合适的数据格式传输形式** (1)JSON和Protobuf效率明显比XML好很多 (2)移动设备,最好能使用JSON之类的轻量级数据格式为佳 (3)使用SAX等边读取边解析的方式来解析数据 **5、数据库** (1) 相对于封装过的ContentProvider而言,使用原始SQL语句执行效率高,比如使用方法rawQuery、execSQL的执行效率比较高。 (2)一次修改多个数据时,使用SQLite的事务方式批量处理 (3)批量插入多行数据使用InsertHelper或者bulkInsert方法 (4)能用文件操作的,尽量采用文件操作,文件操作的速度比数据库的操作要快10倍左右 6、性能测试: (1)逻辑算法的效率执行,我们使用Android上最普遍的,计算执行时间来查看:
long start = System.currentTimeMillis();
// 你想要测试的方法
long duration = System.currentTimeMillis() - start;
“`
(2)可以在DDMS中查看下Logcat的VM释放内存情况,大概模拟下那些地方可以缓存数据或改进算法的
(3)利用traceview和monkey等工具测试应用。
(7)利用layoutopt和ninepatch等工具优化视图。
相关文章推荐
- HTTP对外接口,如何增加签名机制
- W: GPG 错误:http://extras.ubuntu.com precise Release: 下列签名无效
- apache配置httpd-vhosts
- 网络协议层学习笔记
- 追书神器网络协议分析
- 【LINUX/UNIX网络编程】之使用消息队列,信号量和命名管道实现的多进程服务器(多人群聊系统)
- 操作系统与网络实现 之七
- android的实时视频网络传输的知识与概念
- eclipse中jsp错误javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Xcode 官方下载地址 https://developer.apple.com/downloads/
- Notepad++官网地址 https://notepad-plus-plus.org/
- IOS网络请求图片失败原因及解决办法
- 网络
- sipXecs在虚拟机中运行的网络设置
- HTTP Referer 防外链
- Android——网络编程
- StarUML官网地址 http://staruml.io/
- 网络相关问题(上)
- 寻找http://localhost/phpmyadmin出现的问题:HTTP 错误 404.0 - Not Found 您要找的资源已被删除、已更名或暂时不可用
- 如何使用socket进行java网络编程(三)