android减少内存占用专题

android减少内存占用专题

ID:9282578

大小:1.12 MB

页数:31页

时间:2018-04-26

android减少内存占用专题_第1页
android减少内存占用专题_第2页
android减少内存占用专题_第3页
android减少内存占用专题_第4页
android减少内存占用专题_第5页
资源描述:

《android减少内存占用专题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android减少内存占用专题Android开发经验:不要动不动就分配内存2011-03-21开发Andorid应用的开发者都知道,要尽量减少new关键字的使用,因为在手机上GC释放一次内存是一件恐怖的事情,如果你查看一下调试记录,你会发现GC释放内存时有时会花上几百毫秒的时间。可以想象,如果你开发的是游戏,这时你的FPS会下降到多少。虽然这个原则大家都知道,我们还是会看到一些开发者会出现类似问题,这又是为什么呢?呵呵,其实这是一些隐式的对象创建在作怪,看看以下代码:原则1:如果可能,请不要使用可变参数publicvoidtest(Object...

2、args){for(ObjectaObj:args){.......}}当外部调用时:test(1,"somestring",false);系统会自动创建一个临时的数组对象,类似于:Object[]args=newObject[]{1,"somestring",false};如果该函数经常被调用,则会极大增加GC的压力。所以,如果可能,请不要使用可变参数。原则2:如果可能,请用StringBuilder代替字符串的相加我们来看一段代码:publicvoidtest2(){Stringtmp="Hello!"+"someone.";......}系统会

3、将这句翻译成为如下格式:StringBuildersb=newStringBuilder();sb.append("Hello!");sb.append("someone");Stringtmp=sb.toString();这本身没有什么问题,但如果是如下就有意思了:publicvoidtest2(){Stringtmp="Hello!"+"someone.";....tmp+="youageis"+13;....}这段代码等效于:StringBuildersb1=newStringBuilder();sb1.append("Hello!");sb1

4、.append("someone.");tmp=sb1.toString();...StringBuildersb2=newStringBuilder();sb2.append(tmp);sb2.append("yourageis");sb2.append(13);tmp=sb2.toString();...这样是不是悲剧,本来StringBuilder被无意义的重复创建了多次,期间还在数字转换到文本时创建了String,所以请直接使用显示的StringBuilder来链接字符串。原则3:尽量将不变的东东设置为常数,特别是字符串较有效的办法是,你的代

5、码可以这样来写:publicclassTestClass{privatestaticfinalStringSTR_HELLO="Hello!";privatestaticfinalStringSTR_YOU_AGE_IS="youageis";privatestaticfinalintPIx100=(int)(Math.PI*100);......}当然,即使这样做了,后续对文本操作(如整数到文本转换)仍然是一件费时费力的或,原因是JAVA中,String是只读的,任何String的内容操作均隐含了new关键字。作者在实际工作中只好采取了更笨笨的办法

6、,自己实现了一个GString类来替代常用的文本操作,其原理时使用预分配的字节内存,只在需要时才转换为String对象。Android进阶:性能优化篇2011-05-11一、图片载入过多出现OutOfMemoryError异常在使用Gallery控件时,如果载入的图片过多,过大,就很容易出现OutOfMemoryError异常,就是内存溢出。这是因为Android默认分配的内存只有几M,而载入的图片如果是JPG之类的压缩格式,在内存中展开时会占用大量的空间,也就容易内存溢出。这时可以用下面的方法解决:ImageViewi=newImageView(m

7、Context);BitmapFactory.Optionsoptions=newBitmapFactory.Options();options.inSampleSize=10;//貌似这个options的功能是返回缩略图,10即表示长和宽为原来的1/10,即面积为原来的1/100//缩略图可以减少内存占用Bitmapbm=BitmapFactory.decodeFile(lis.get(position).toString(),options);i.setImageBitmap(bm);bm.recycle();//资源回收二、统一管理位图资源,适

8、时释放资源classImageManager{privateWeakHashMap

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

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

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