Android开发踩坑记

RecyclerView踩坑

  1. position RecyclerView中position和ListView中position不一样,前者的position(数据用的)是一直不变的,要想得到当前控件所处的position,必须要通过holder.getLayoutPosition()(布局用的),拿到当前的position,进行操作数据,尤其注意notifyItemChanged(position)和notifyItemInsert(position)

  2. 踩坑之bitmap,bimap 在android中是个魔鬼,时不时的照成OOM异常,让我们内心时常跳出很多个草泥马,bitmap的问题主要有以下几个
    bitmap 一次性的内存不要超过8M,android默认不会超过8M,如果一次性操过8M,就会产生令我们surprise的OOM。我遇见两种产生的情况

  • 第一种:处理圆角图片的时候我发现图片超过了8M,Bitmap.Config的ARGB设置成为了8888,如果对透明度没要求的话,可以设置成为RGB565,还有一个经常不用的是RGB4444,最最重要的是处理圆角图片的一个很重要的问题就是内存不管怎么做,都会加大接近一倍,最好的方式是自定义一个圆角ImageView

  • 第二种:一次性加载很多个图片,导致内存突然暴,但是一般情况下不会造成OOM异常,我们需要在合适的时候把bitmap进行释放,采用bitmap.recycler(),然后在使用bitmap=null,可以调用system.gc()机制遍历下内存释放bitmap

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,536评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,903评论 22 665
  • View 自定义View中在onDraw()方法中可以设置padding吗?答案是不能,设置padding后,Vi...
    ElvenShi阅读 1,908评论 0 0
  • 很多时候做了计划,然后执行,但是却又时不时的发现很多问题,所以这个时候,去做总结和思考,修改计划就相当重要了。 关...
    MadeleineJustin阅读 108评论 0 0
  • 果果: 今早我们睡到10点钟,好像这个学期第一次这么晚起床,即舒服又自责。 今天上了声乐课和吉他课,然后我们和小徐...
    热带毛毛虫阅读 155评论 0 1