首页 > 代码库 > android 重复进入app heapSize不断增大的问题
android 重复进入app heapSize不断增大的问题
最近项目中碰到了一个特别奇葩的问题,上stackoverflow搜索了半天,最后终于一句话解决了,system.exit(0);没错,相信程序中都存在双击退出程序的功能,但是我用DDMS分析应用程序的内存,发现当我重复进入一个Activity的时候,内存长的很快,当然这块涉及到内存优化的问题,内存的bug是我程序中持有了Activity的全局引用,并放到了一个静态的list中导致的,所以时间长了,我用ImageLoader加载不出来图片。。。。就是这么奇葩的现象。。。。无语了。好吧,接下来就是开始了漫长了寻找过程,最后发现代码中我创建了一个静态的list,每次去网络请求就保存了一个listener,listener里面更新界面,当然界面就涉及到了View的创建,View的创建需要引用当前的Activity的Context,所以导致整个Activity都没有释放掉。。。坑爹啊!!!
上一个反反复复进入一个Activity,内存不断增大的问题解决了,接下来就该解决另一个问题了,我重重复复的进入我的Activty,发现app 的heapSize 不断的增大,是什么原因呢,我猜测的是,我进入主Activity的时候有一个进场动画,需要在Assets中加载一张400多k的图片,然后让这个图片在屏幕中正方形移动,好吧,但是过场动画后,我及时的已经把图片释放掉了,但是为什么每一次进入App,系统都多给我分配4~5兆呢,这不坑爹啊!我内存够用啊。。。。。,上帝啊!好吧,继续找。。。。,最后上stackOverFlow发现了问题的所在,我们在双击返回应用的时候,我们只是finish掉了Activity,这还不够,应该调用System.exit(0);
加上这句话后,发现在退出应用后,heapSize直接释放掉了30~40兆,这是什么概念,当你重新进入应用的时候,就和你第一次安装的时候系统给你分配的heapSize一样,这就是我要的效果。
总结:在双击退出应用的时候,记得调用system.exit(0);这句话,释放app的appSize。
android 重复进入app heapSize不断增大的问题