您的位置:首页 > 理论基础 > 计算机网络

安卓网络优化(5)

2015-11-06 23:47 495 查看
1、避免频繁网络请求

有效管理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等工具优化视图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: