您的位置:首页 > 产品设计 > UI/UE

解决内存溢出的其中一个简单办法。android:largeHeap="true"

2017-11-06 18:00 525 查看
最近在开发中。遇到了内存溢出的问题。。是因为Viewpager 嵌套了多个Fragment的缘故。在优化上进行了处理。。发现效果不是很理想。。基本上APP一运行。直接就到了128M左右。很容易就导致内存溢出了。 后来通过查询。发现一个最简单办法就是人为提高系统可以分配给APP运行的最大内存。

可以在Application 属性下  设置属性:

android:largeHeap="true"

通过打印日志查看APP运行获得内存情况。获取内存情况代码如下。以下是获取代码

int maxMemory = (int) Runtime.getRuntime().maxMemory();//这是获取当前APP已经可以申请到的最大运行内存
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
int memorySize = activityManager.getMemoryClass();//这是获取当前APP默认情况下的最大运行内存
int newmaxmemorySize=activityManager.getLargeMemoryClass();//这是获取当前APP可以申请到的最大运行内存
Log.d("sunlei","maxMemory------"+maxMemory/1024/1024+"M");
Log.d("sunlei","memorySize------"+memorySize+"M");
Log.d("sunlei","newmaxmemorySize------"+newmaxmemorySize+"M");


测试机型是:红米note4

1、

当未设置此属性情况下:运行效果

11-06 17:56:44.506 4378-4378/com.example.jiana.cutvideoframedemo D/sunlei: maxMemory------128M

11-06 17:56:44.506 4378-4378/com.example.jiana.cutvideoframedemo D/sunlei: memorySize------128M

11-06 17:56:44.506 4378-4378/com.example.jiana.cutvideoframedemo D/sunlei: newmaxmemorySize------512M

2、设置了该属性。运行效果

11-06 17:59:17.000 6880-6880/com.example.jiana.cutvideoframedemo D/sunlei: maxMemory------512M

11-06 17:59:17.000 6880-6880/com.example.jiana.cutvideoframedemo D/sunlei: memorySize------128M

11-06 17:59:17.000 6880-6880/com.example.jiana.cutvideoframedemo D/sunlei: newmaxmemorySize------512M

第一个打印的效果就是 扩充后的可以运行内存。也就导致内部溢出不那么容易。。。很直观。。从128M升级到了512M
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐