Android开发笔记之内存问题。

搞安卓的简单开发也有一段时间了。程序算是基本做好了。结果出现了程序崩溃的问题。

终于到了这个时刻了么。 Android开发笔记之内存问题。

接下来应该就是些系统各方面的问题研究了。

程序崩溃问题,目前我确定为,程序内存占用较大。最后被系统kill掉。因此开始研究内存占用问题。

百度到的一些有用的启发:

假如有三个activity,分别是main,a 和b . 
a和b都是需要很大内存的,在main中打开a或b,在a或b中直接按返回键,或者直接调用finish,回到main后通过update heap观察刚才打开的activity占用的资源可以很快释放,如果是setResul后再调用finish回到main,发现内存被释放的事件要稍微久一些。 
第二个问题,在main中打开a,然后在a中startActivity打开b,然后a.finish,这个时候观察a的内存并没有释放。如果在b中调用finish返回main后,a和b的内存就会被释放掉。

作为一个新手,总是在调用程序界面跳转的时候喜欢用
Intent intent = new Intent(MainActivity.this,otherActicity.class);
startActivity(intent);
的简单跳转方法。

因此在反复几次跳转之后。根据百度到的第二个问题的情况。就是内存占用太多了。结果被系统kill掉了。

知道了原因。处理起来应该比较简单。就是想办法把内存释放掉就行了。


另外附加一个小的问题。

调用Toast来做简单的提示的时候。在Toast提示显示出来,还没消失的时候,调用其他的Activity可能会因此程序崩溃。因为我的程序是这样。所以这也是一个程序崩溃之后的思考方向。

关于内存泄漏:
这个百度链接好像还挺有用的,可以看看。

 

这次的安卓项目做得还是挺失败的。。。主要是为自己定的目标太低了。

 

内存问题解决方法:

注意一些Bitmap:

 recycle(); 如果这个bitmap依然被引用的话,这样做相当于清除bitmap了。用到的时候会报错的哦。

MediaPlayer.release(); 释放音乐文件的占用内存。

Database.close();

cursor.close();

还有文件等的close(),避免内存泄漏。

1)查看某个博客说的。建立一个空的view. 然后重写onDestroy方法。 里面setContentView();为这个空的view.

解释:这样改Activity引用的原来的view,会因为没有被引用,被垃圾回收系统回收掉。 不过这个方法在其他的程序里面目前为止基本没见到过。暂不推荐。不过还是有点效果的。

 

2)重写onDestroy()方法。 在里面将一些想要释放的东西赋值为null。 然后调用一下System.gc();这个垃圾回收的系统。(注意不要太频繁)。  程序最终采用的是这种方法。运行的很好。

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小公子三木君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值