ImageViewer应用开发总结

ImageViewer应用开发,android应用开发体会

在开发ImageViewer这个应用的过程中,主要遇到了以下问题: 

  1,对android应用层的控件,ImageSwitcher和Gallery还不熟悉
  2,在开发的工程中,因为Gallery空间加载sdcard图片的时候,一次加载了所有sdcard卡上的图片,从而导致了OOM(out of memory).
  3, 在添加删除的过程中,由于对Gallery控件的不熟悉,一时间不知道,在删除一张图片之后,应该如何控制Gallery,让这张图片在Gallery中消失。

  4,开发工程中,一度逻辑混乱,但是左右一一纠正。

 

对上述问题的回答:

  1,关于android控件

    可以理解,android 的应用层开发实际上就是UI,就是调用SDK中的API,来合理的堆砌android固有组建。对于这类开发,主要的逻辑就是,画什么,在哪里画,什么时候画的问题。

  2,OOM

    在应用中如果一次性加载很多张sdcard中的图片,那么内存不足,必然会出现OOM异常。解决方案是:在Gallery需要加载图片的时候,首先取查询ImageCache,这个Cache是对图片资源的一个缓存,用Hashtable来表示,Key是加载进来的图片的索引好,value就是这个图片的图片的对象。当需要加载的图片不在cache中的时候,才取解码保存一张图片资源。那么什么时候释放cache资源呢?根据Gallery控件的特性,任何一个时刻总有一张图片被选中,所以onItemSelected方法总有机会调用,那么在onItemSelected方法的最后取调用一个releaseBitmap来释放cache中的图片资源。那么有哪些图片资源是可以被释放的呢?我的代码里认为,凡是在Gallery控件不可见的范围呢的图片都是可以被释放的。关于,这你点,可以因地制宜。

  3,Gallery的删除

    这里又要提到的Gallery的特性,我不太清除到底Gallery是什么,但是我知道Gallery在使用的时候要绑定一个adapter,来做为Gallery和具体数据之间的桥梁,然后具体的数据,隐藏在adapter内,这里我的数据是一个ArrayList来指示图片的绝对路径,当删除一张图片的时候,数据源发生了变化,这个变化要让adapter感知到,就要调用方法adapter.notifydatasetchanged()方法,并且让Gallery重新设置adapter,gallery.setAdapter()。对于,我代码中的处理,我个人认为还存在一点效率上的问题。但是,大致思路,应该如此。

  4,在应用开发的过程中,我一度逻辑混乱,对于一个应用开发者来说,这是非常可怕的,在此我提醒自己,在开发的过程中,一定要先想清楚再行动。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值