关于启动一个Activity造成堆溢出的问题

       在moto g上运行该程序没有报错,一切正常,仿真也一切正常。但是在华为C8813上运行就不能正常启动一个特定的Activity,Logcat给出的信息如下,可见是出现了堆溢出。

02-14 22:43:19.560 28458-28458/zhouxu.client_demo E/dalvikvm: GC_FOR_ALLOC freed 346K, 38% free 8719K/13955K, paused 2ms+2ms, total 23ms

02-14 22:43:19.630 28458-28462/zhouxu.client_demo E/dalvikvm: GC_CONCURRENT freed 5K, 22% free 19569K/24839K, paused 11ms+2ms, total 34ms

02-14 22:43:19.700 28458-28458/zhouxu.client_demo E/dalvikvm: GC_FOR_ALLOC freed 0K, 22% free 19569K/24839K, paused 1ms+2ms, total 17ms

02-14 22:43:19.750 28458-28458/zhouxu.client_demo E/dalvikvm: GC_BEFORE_OOM freed 9K, 22% free 19559K/24839K, paused 50ms, total 50ms

02-14 22:43:19.750 28458-28458/zhouxu.client_demo E/dalvikvm-heap: Out of memory on a 25020020-byte allocation.

       原因是我给一个Button设置了背景,但是这个背景图片的分辨率很高,在内存大的机器上运行没有问题,在内存小的机子上运行就捉襟见肘了,于是溢出,程序被终止。
     解决方法就是多切几张图,采用合适的分辨率,分别保存到drawable和mipmap-xxx文件夹下,mipmap-xxx分别对应不同的分辨率。详见Android的文档。

你可能感兴趣的:(heap,memory,out,of,堆溢出,Android程序闪退)