最近解决的几个bug

这两周的工作主要是解决bug,回顾一下:

1:marketdownloadactivity中再有多个app在下载中时,按钮"暂停/继续" 有时会失效

  原因:之前的版本刷新每个下载条目的进度使用的是notifydatasetchanged,而在getview中会有设置setonclicklistener的方法,所以就会出现listener还未设置就发生点击事件的情形.所以出现次bug

   解决:实现单条刷新的方法,刷新单条进度不再使用notifydatasetchanged(),而且频繁notifydatasetchanged()会造成严重的性能损耗,当布局没有大得改变时不要用notifydatasetchanged();

2:marketdownloadactivity,有时点击“暂停”按钮后下载暂停了,但是按钮的显示何下载进度条文字显示都未改变

   原因:每次开始下载时发起的请求userdownloadevent(显示信息从此提取)和下载进度更新返回的userdownloadevent对象不是同一个,所以暂停只是对第一个userdownloadevent操作,而下载是异步的,当暂停时可能有一个更新进度的userdownloadevent正在发送过程中。所以导致信息不一致

  解决:再更新下载进度处添加判断语句,如果显示已经变成了pause,就不要更新进度和改变第一个userdownloadevent。

  备注:其实更好的方法时一个下载任务只存在一个userdownloadevent,这样就不会出现错误,不能理解当时为什么会创建出两个对象出来。不过现在项目的代码耦合太深,没法改,不敢改。。。。。。(补充:与写这部分代码的哥们儿交流后得知他是想把下载模块与前端解耦,不想让前端得到下载的后台数据,故返回进度时会重新创建yigeuserdowneventinfo来封装进度信息)

3:壁纸详情加载时背景图、下载管理中“空空如也”等会多次加载的图片报oom

  原因:之前的方法是setbackgroundresource(resid)或者setimageresource(resid)方式,这种加载本质时java解码创建一个bitmap对象,但没有recycle

  解决:1.压缩加载背景图,只保留图形部分;2.在代码中使用"decodeResource()"方法来解码图片并得到bitmap,多个imageview复用一个bitmap:3.view销毁时recycle图片

  备注:此bug原因不能完全肯定

先写到这里,待续

 

你可能感兴趣的:(最近解决的几个bug)