《android内存》ppt课件

《android内存》ppt课件

ID:27094993

大小:495.51 KB

页数:21页

时间:2018-12-01

《android内存》ppt课件_第1页
《android内存》ppt课件_第2页
《android内存》ppt课件_第3页
《android内存》ppt课件_第4页
《android内存》ppt课件_第5页
资源描述:

《《android内存》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、android内存管理──朱鹏自我介绍朱鹏Android开发工程师qq:752061935手机:15618953973二手房租房新房WhyAndroid系统有自己的垃圾回收机制,可以自动回收内存空间。那为什么还需要专门做个针对内存管理做一个分享呢?答案很简单:crash!!!Bitmap谈到android内存管理这里不得不提的一个对象就是Bitmap。内存大户而一个andriod程序运行过程中所占用的内存(native+dalvik)超过>16M(默认)OOM查看内存使用情况adbshelldumpsysmeminfo$pac

2、kage_nameor$pidBitmap对象bitmap对象android虚拟机(DVM)linux底层C内存recycle()首先明确一点无论你调用不调用recycle()方法,android程序都不会内存泄露。recycle只做了一件事:Thebitmapismarkedas'dead'。recycle真的用途在于:它可以帮助GC快速决定是否回收这个对象,当一个应用包含大量的图片的时候,这个方法还是很有作用的,因为GC并没有你想象的聪明。recycle()具体使用//先判断是否已经回收if(bitmap!=null&&!

3、bitmap.isRecycled()){//回收并且置为nullbitmap.recycle();bitmap=null;}这里再介绍一个比较实用的方法if(imageView!=null&&imageView.getDrawable()!=null){BitmapoldBitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap();imageView.setImageDrawable(null);if(oldBitmap!=null){oldBitmap.recyc

4、le();}}建议在一个大量使用图片的应用中activity继承以下BaseActivitypublicclassBaseActivity{ArrayList>bitmapCache=newArrayList>();@OverrideprotectedvoidonDestroy(){for(SoftReferencesb:bitmapCache){回收操作}super.onDestroy();}}bitmap什么时候会导致程

5、序OOM单张图片过大解决方案:1、调整dvm单个堆栈大小2、压缩图片3、切割图片小图片累积过多解决方案:1、用完即手动recycle图片压缩小技巧在使用BitmapFactory压缩图片的时候,BitmapFactory.Options设置inJustDecodeBounds为true后,再使用decodeFile()等方法,可以在不分配空间状态下计算出图片的大小。示例:BitmapFactory.Optionsopts=newBitmapFactory.Options();//设置inJustDecodeBounds为tru

6、eopts.inJustDecodeBounds=true;//使用decodeFile方法得到图片的宽和高BitmapFactory.decodeFile(path,opts);//打印出图片的宽和高Log.d("example",opts.outWidth+","+opts.outHeight);(ps:原理其实就是通过图片的头部信息读取图片的基本信息)Bitmap在listview和gallery中的典型使用Map>mBitmapList;publicvoidlo

7、adImage(imageView,url){1、根据url从内存即mBitmapList读取地图,如果内存没有读到图片则进行第二步。2、根据url读取本地图片,如果没有读取到,则进行第三步。3、将url加入下载队列,下载成功后将bitmap加入内存缓存即mBitmapList。}ps:在listview和gallery滑动的过程中可以不断手动recycle()不用的bitmap对象,维持内存缓存mBitmapList固定大小,这样可以减小oom发生的概率。gallery的问题经过以上处理之后你会发现listview很好用了,

8、很难在发生OOM。但是你会发现一个问题,这种方法在gallery上总是不好用,要不是出现OOM,就是抛出异常trytorecycleausingbitmap。这是为什么呢?gallery相关的adapter的常见写法classGalleryAdapterextendsBase

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。