今天彻底解决了OOM的问题,其实还是自己写代码不严谨,有些东西没有及时释放,还有些释放的位置不对,总结一下就是:
如果项目有三关,每一关需要的资源都不一样,那就最好每关单独写。
Init();//初始化,里面存放一些变量的值
getImage();//里面是获取图片或者声音的代码,比如说你要获取图片,如下:
if(Bitmap==null){
Bitmap=..........;
}
如果你的用了其它的类需要new的时候,先全局变量给个名字,比如说 Game game;然后在getImage()里new
if(game==null){
game=new Game();
}
///////////////////////////////////////////////////////
releaseImage();
这里面就简单了,把你不用的图片和不用的类都变成null就好了
Bitmap=null;
game=null;
三关都这样单独写,等觉得没问题的时候再合成,其中在合成的类中用switch case区别开,用到哪个就getImage哪个,不用的时候再releaseImage掉,这样就不会报OOM的错误了。
我之前总报这个错误是因为我case了11次 算算差不多是11关,其中有几关的get和release弄混淆了,所以这个隐藏的BUG一直都刺痛着我的神经,在这里分享一下心得,如果你不需要new其他的类,这个OOM的错误报的就不会很频繁的。
阅读(256) | 评论(0) | 转发(0) |