手机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。我们以后还会持续关注手机领域的开发,敬请期待。

作者简介

2-f13-1-3.jpg
陈跃峰 爪哇米工作室创始人