问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-03-28 22:53

我来回答

2个回答

热心网友 时间:2022-03-29 00:22

一、尽量减少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的内存占用。所以,那些无关痛痒的东西,还是别抽象了。

热心网友 时间:2022-03-29 01:40

下面的方法可以优化app的运行内存:

1、内存资源紧张时释放内存

在应用生命周期的任何阶段 onTrimMemory() 回调方法都可以告诉你设备的内存越来越低的情况,
你可以根据该方法推送的内存紧张级别来释放资源.

2、使用优化后的数据容器

利用 Android 框架优化后的数据容器, 比如 SparseArray, SparseBooleanArray 和 LongSparseArray.
传统的 HashMap 在内存上的实现十分的低效因为它需要为 map 中每一项在内存中建立映射关系. 另外, SparseArray类非常高效因为它避免系统中需要自动封箱(autobox)的key。

3、使用保守的Service

如果你的应用需要使用 service 在后台执行业务功能, 除非是一直在进行活动的工作(比如每隔几秒向服务器端请求数据之类)否则不要让它一直保持在后台运行. 并且, 当你的 service 执行完成但是停止失败时要小心 service 导致的内存泄露问题.

4、当心抽象代码

通常来说, 使用简单的抽象是一种好的编程习惯, 因为一定程度上的抽象可以提供代码的伸缩性和可维护性. 然而抽象会带来非常显著的开销: 需要执行更多的代码, 需要更长时间和更多的运行内存把代码映射到内存中, 所以如果抽象没有带来显著的效果就尽量避免.

那么如何查看APP运行内存占多少?

手机查看运行内存的方法:
1.部分手机内置内存管理器/智能管理器,开启该应用可查看内存使用情况。
2.部分机器:长按Home键-进入任务管理器-RAM状态-查看即可。
提示:不同型号手机查看路径可能略有不同。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 请问谁知道微笑pasta在哪个网站上可以看到?不卡,... 微笑pasta哪里可以免费快速的看全部 微笑pasta在线观看或下载地址 微笑pasta在哪个台可以看到 微笑pasta在哪个播放器可以下载 观看王心凌 微笑pasta 在哪个网站 收看微笑PASTA的台湾节目播放器``在哪里下载呀?? 我想知道台剧微笑pasta在哪可以看得到 微笑pasta在线那里可以观看 微笑pasta在哪个视频可以看啊?我下载了好多视频都... 微笑PAST哪个播放器可以看 微笑pasta在哪里在线收看? 现在什么软件在放微笑PASTA? 《微笑(2006)》百度云免费在线观看,王心凌主演的 微笑pasta在哪个看电视软件可以下载 微笑pasta怎么都看不了 那里现在能看全集 《微笑pasta》在哪个平台播出? 未来社区和普通小区的区别 宁波彩虹南路119弄规划未来社区吗? 整县分布式光伏试点方案 电脑微信聊天记录怎么恢复? 怎么在电脑上恢复微信聊天记录 电脑上的微信记录怎么恢复? 在电脑上如何恢复微信聊天记录 电脑微信聊天记录删除可以恢复吗? 电脑版微信怎么恢复聊天记录? 怎么在电脑上回复微信聊天记录 备份到电脑的微信聊天记录不小心删掉了,怎样才能... 商品房网签如何查询 怎样查询自己购房网签成功 怎么看房子有没有网签 [跪求!!!]高三女生送什么生日礼物比较好 网签房产合同该怎么查询 女儿高考送什么礼物好 怎么查询房屋网签信息 购房网签如何查询? 网签房怎么查询? 送高三女同学什么生日礼物好呢?求意见… 请教 怎么查自己的房子有没有网签 房子网签合同怎么查询