如何优化app的运行内存占用

 我来答
匿名用户
2015-06-26
展开全部
一、尽量减少Service的使用:
当你的app需要使用service来处理后台任务的时候,要保证当前的任务完成时,该service也要停止。另外,要注意的是,当停止这个service的时候,不要引起它的泄漏。
当启动一个service之后,系统总会保持这个service处于运行状态。这样,就会占用大量的RAM。所以,app的运行效率就会因此降低。
保留没有用的service最可怕的内存管理错误。所以,一定要牢记,没有必要使用service的时候就不用,用完了一定要记得将它销毁,,,,

二、当界面变为不可见时,要记得释放内存:
当用户跳转到其他界面时,并且当前界面不再可见的时候,要记得释放当前这个界面中的资源。
当用户退出某个界面时,记得在你的activity中实现onTrimMemory()(api4.0及以上)这个回调方法。调用这个方法,系统会收集不需要的内

三、当内存变少时,释放内存:
在你的app运行过程中,当运行该app的设备所剩的RAM变得很少时,系统就会调用onTrimMemory()这个方法,这个方法中有几个参数,表示不同的状态。onTrimMemory()的具体使用,还请大家参加Android的开发文档吧,本人手懒,就不详细介绍啦。

四、检查你所需要使用的内存:
可以通过getMemoryClass()估计一下你的app可用的heap。当你的app所需要的内存超过了这个可用值时,好了内存溢出就出现了。
这里有一个很特殊的方法,可以通过在manifest <application>标签中将largeHeap的属性值设置为true来请求更大的内存,主要注意的是,如果你采用了这种方法,那么当你想要获取可用内存时,就要使用 getLargeMemoryClass()。
不过由于每台机器的RAM是有限的,所以用这个还是小心吧,不需要用的时候还是不用了吧。

五、避免由bitmap引起的内存浪费:

bitmap还是很占内存的啊,当我们使用它的时候一定要小心。有几个需要注意的方法:
1、不要直接使用这样会占用很大的内存,使用BitmapFactory.Options设置inSampleSize,根据手机屏幕大小来设置bitmap的大小, 这样做可以减少对系统资源的要求。
2、缓存图像到内存,采用软引用缓存到内存,而不是在每次使用的时候都从新加载到内存;
3、采用低内存占用量的编码方式,比如Bitmap.Config.ARGB_4444比Bitmap.Config.ARGB_8888更省内存;
4、最后就是最重要的一点,当bitmap使用完之后一定要记得回收,,,

六、使用优化过的数据容器
尽量使用 SparseArray, SparseBooleanArray, LongSparseArray 等经过优化的容器类。通常来说HashMap的效率时比较低下的。

七、小心使用抽象类(方法)
适当的使用抽象类和方法能够使我们的代码更加灵活、易维护,但是这样会增加app的内存占用。所以,那些无关痛痒的东西,还是别抽象了。
柚鸥ASO
2024-03-16 广告
ASO优化是一种提升App在应用商店搜索结果排名的方法,使得App更容易被用户搜索到。在iOS上,以下是一些ASO优化的建议:1. 优化应用图标:加入最能代表应用核心功能的素材,让潜在用户第一眼就能读懂你的产品。2. 优化应用描述:应用描述... 点击进入详情页
本回答由柚鸥ASO提供
day忘不掉的痛
2014-12-20 · 知道合伙人数码行家
day忘不掉的痛
知道合伙人数码行家
采纳数:62646 获赞数:223943
本人担任公司网络部总经理多年,有充足的网络经验、互联网相关知识和资讯。

向TA提问 私信TA
展开全部
一、尽量减少Service的使用:
当你的app需要使用service来处理后台任务的时候,要保证当前的任务完成时,该service也要停止。另外,要注意的是,当停止这个service的时候,不要引起它的泄漏。
当启动一个service之后,系统总会保持这个service处于运行状态。这样,就会占用大量的RAM。所以,app的运行效率就会因此降低。
保留没有用的service最可怕的内存管理错误。所以,一定要牢记,没有必要使用service的时候就不用,用完了一定要记得将它销毁!!!!

二、当界面变为不可见时,要记得释放内存:
当用户跳转到其他界面时,并且当前界面不再可见的时候,要记得释放当前这个界面中的资源。
当用户退出某个界面时,记得在你的activity中实现onTrimMemory()(api4.0及以上)这个回调方法。调用这个方法,系统会收集不需要的内

三、当内存变少时,释放内存:
在你的app运行过程中,当运行该app的设备所剩的RAM变得很少时,系统就会调用onTrimMemory()这个方法,这个方法中有几个参数,表示不同的状态。onTrimMemory()的具体使用,还请大家参加Android的开发文档吧,本人手懒,就不详细介绍啦。

四、检查你所需要使用的内存:
可以通过getMemoryClass()估计一下你的app可用的heap。当你的app所需要的内存超过了这个可用值时,好了内存溢出就出现了。
这里有一个很特殊的方法,可以通过在manifest <application>标签中将largeHeap的属性值设置为true来请求更大的内存,主要注意的是,如果你采用了这种方法,那么当你想要获取可用内存时,就要使用 getLargeMemoryClass()。
不过由于每台机器的RAM是有限的,所以用这个还是小心吧,不需要用的时候还是不用了吧。

五、避免由bitmap引起的内存浪费:

bitmap还是很占内存的啊,当我们使用它的时候一定要小心。有几个需要注意的方法:
1、不要直接使用这样会占用很大的内存,使用BitmapFactory.Options设置inSampleSize,根据手机屏幕大小来设置bitmap的大小, 这样做可以减少对系统资源的要求。
2、缓存图像到内存,采用软引用缓存到内存,而不是在每次使用的时候都从新加载到内存;
3、采用低内存占用量的编码方式,比如Bitmap.Config.ARGB_4444比Bitmap.Config.ARGB_8888更省内存;
4、最后就是最重要的一点,当bitmap使用完之后一定要记得回收!!!

六、使用优化过的数据容器
尽量使用 SparseArray, SparseBooleanArray, LongSparseArray 等经过优化的容器类。通常来说HashMap的效率时比较低下的。

七、小心使用抽象类(方法)
适当的使用抽象类和方法能够使我们的代码更加灵活、易维护,但是这样会增加app的内存占用。所以,那些无关痛痒的东西,还是别抽象了吧。

满意请采纳,如有疑问请追问~
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
养恬欣0Ir80f
2014-12-20 · TA获得超过146个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:131万
展开全部
关闭
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式