手机APP五大秘技之优化内存
编程学堂
PC的内存都非常大,在1GB 至4GB之间,而手机内存远远达不到这个水平,所以手机APP 对内存占用的要求非常严格。如果内存占用过高,很容易就会拖慢系统的速度,严重影响用户的操作。如何减少内存占用呢?请接着往下看(本期操作平台是Android)。
三招减少内存占用
手机的内存从最开始Nokia S40的几十KB,增长到现在的几百MB,但是手机使用的APP也在增多,所以对于开发者来说手机内存还是很宝贵的资源,在实际开发中要尽量注意以下几点:
●减少对象数量
一般的对象只创建一次,尽量做到重复使用,经常使用的对象,可以归于“对象池”中,方便调用。
●适时释放内存
在APP运行时,尽量释放不用的内存,例如调用System.gc回收内存。
●优化算法
当项目功能开发完成后,可以使用开发工具的优化工具,找出程序中内存使用的瓶颈,有针对性地进行优化。这里优化的主要是程序的逻辑算法。
小提示 | TIPS
实时查看Android程序的内存状况,可以使用Runtime类中的两个方法:
totalMemory方法:获得当前应用的总可用内存
freeMemory方法:获得当前应用的空闲内存
而本程序当前占用的内存=总内存-空闲内存。
验证内存优化效果
本实验用了两段内存代码,代码1未优化过,代码2优化过。
第一步:在Eclipse中选择“File→New→Android Project”打开新建项目窗口,然后设置application name为MemoryDemo、package name为com.javamestudio.android.memorydemo、Create Activity为MemoryDemoActivity。最后,点击“File→New→Class” 新建一个类名为MemoryDemoView的类,并用类似的步骤新建一个Shop类。
第二步:在MemoryDemoView类中覆盖onDraw方法,并添加绘制的代码,关键代码如下所示(完整代码下载地址:http://www.icpcw.com/bzsoft):
public void onDraw(Canvas canvas){
//清屏
paint.setColor(Color.BLACK);
paint.setStyle(Style.FILL);
canvas.drawRect(new Rect(0,0,width,height), paint);
paint.setStyle(Style.STROKE);
//绘制说明文字
paint.setColor(Color.RED);
canvas.drawText("当前内存:" + currMemory, 30, 30, paint);
for(int i = 0;i < 2;i++){
//绘制边框
paint.setColor(Color.WHITE);
canvas.drawRect(new Rect(width / 4,startY + i * (sepY + areaHeight),width * 3 / 4,
startY + i * (sepY + areaHeight) + areaHeight), paint);
第三步:编写内存代码:
private void logic(){
switch(type){
case 0://代码1
shop = new Shop();
shop.name = "test";
break;
case 1://代码2
if(shop == null){//减少对象创建
shop = new Shop();
}
shop.name = "test";
System.gc();//回收内存
break;
}
//获得当前可用内存
currMemory = runtime.totalMemory() - runtime.freeMemory();
}
最后,选择Eclipse中的项目“MemoryDemo”,单击鼠标右键,选择“Run As→Android Application”即可。使用代码1时,内存的数值一直在增长,而使用代码2,内存的数值保持平稳。
疑问解答
读者提问:请问Android开发需要什么基础,我在学校里面学过Java语言,适合吗?
陈跃峰:Android开发分为两种:1.基于Java语言的SDK开发,2.基于C/C++语言的NDK开发。第一种主要适合手机APP和手机游戏等的开发,第二种主要适合手机底层的系统开发。如果有一定的Java语言基础的话,从事手机APP和手机游戏开发还是比较容易入门的。
总结
到此为止,我们的手机APP开发系列就结束了,如果大家还有什么疑问,可以跟小编联系,联系邮箱:pcw-chendx@vip.sina.com或者访问小编的微博:http://t.sina.com.cn/cdx1983。我们以后还会持续关注手机领域的开发,敬请期待。
作者简介
