首页

文章

如何优化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状态-查看即可。
提示:不同型号手机查看路径可能略有不同。

八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 请问谁知道微笑pasta在哪个网站上可以看到?不卡,... 微笑pasta哪里可以免费快速的看全部 微笑pasta在线观看或下载地址 微笑pasta在哪个台可以看到 微笑pasta在哪个播放器可以下载 观看王心凌 微笑pasta 在哪个网站 收看微笑PASTA的台湾节目播放器``在哪里下载呀?? 我想知道台剧微笑pasta在哪可以看得到 微笑pasta在线那里可以观看 微笑pasta在哪个视频可以看啊?我下载了好多视频都... 微笑PAST哪个播放器可以看 微笑pasta在哪里在线收看? 现在什么软件在放微笑PASTA? 《微笑(2006)》百度云免费在线观看,王心凌主演的 微笑pasta在哪个看电视软件可以下载 微笑pasta怎么都看不了 那里现在能看全集 《微笑pasta》在哪个平台播出? 未来社区和普通小区的区别 宁波彩虹南路119弄规划未来社区吗? 整县分布式光伏试点方案 电脑微信聊天记录怎么恢复? 怎么在电脑上恢复微信聊天记录 电脑上的微信记录怎么恢复? 在电脑上如何恢复微信聊天记录 电脑微信聊天记录删除可以恢复吗? 电脑版微信怎么恢复聊天记录? 怎么在电脑上回复微信聊天记录 备份到电脑的微信聊天记录不小心删掉了,怎样才能... 商品房网签如何查询 怎样查询自己购房网签成功 怎么看房子有没有网签 [跪求!!!]高三女生送什么生日礼物比较好 网签房产合同该怎么查询 女儿高考送什么礼物好 怎么查询房屋网签信息 购房网签如何查询? 网签房怎么查询? 送高三女同学什么生日礼物好呢?求意见… 请教 怎么查自己的房子有没有网签 房子网签合同怎么查询
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com