安卓网络优化(5)

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等工具优化视图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值