RT,程序运行一段时间就报Out of memory ,如下图所示
我是这样测试的,先打开一个Activity,当然我的Activity界面比较漂亮,有用到一些图片做背景,然后再关闭这个Activity,再打开,反复的可能测试了半个小时,就报这个错误了,每一次关闭Activity的时候我调用System.gc()垃圾回收一次,不过就算是这样还是抱内存不足的错误,请教大家是什么原因!!!!测试中我打开那个Activity,不关闭,程序一直挂着都没有问题的,Activity中还建有线程更新一些图形界面之类的操作
------解决方案--------------------
你应该又几百k的图片被加载了吧?android设计规范种也有说到不建议讲图片设计的过大,对于背景图片建议使用.9格式化,不知道是否可以帮到你。
------解决方案--------------------
你是使用bitmap么?这个要手动释放资System.gc();只能释放Java部分的,bitmap要调用recycle()释放资源。
------解决方案--------------------
其实有时候真的没必要把很大分辨率的图片按照32位解码来作为背景图啥的,可以根据屏幕大小 压缩解码,另外可以解码成RGB565,这样可以减少很多内存,而基本没影响显示效果。
------解决方案--------------------
其实调用了gc() 也不是说系统会立刻清理内存的,只是你给它安排了一个任务,啥时候执行就看系统自己的调度了。
但是不建议频繁调用这个gc接口。基本没什么用
------解决方案--------------------
all right.
------解决方案--------------------
图片的影响我觉得很小,因为我把100K的图片去掉也是一样的会有这样的情况,一直不停的打开关闭20分钟就会报错,如果测试15分钟左右,暂停测试一会,让程序挂那里跑,那么几分钟后内存会回落,又可以继续这样压力测试10几分钟
有没有可能存在对bitmap的静态(static)类型的引用?
静态类型的引用?没有,我的所有图片资源都没有声明是静态类型的,还有就是XML文件中android:background="@drawable/ipad_xxxx_bg"
这样直接设定控件背景算不算?
这个不算静态引用