您的位置:首页 > 移动开发 > Android开发

Android读书笔记(一)Activity退出时释放内存

2016-04-26 19:45 477 查看
最近一直在写自己的音乐播放器,作为菜鸟来说着实有些东西没弄明白,这时候习惯性的百度,然后耗费大量的时间来检索信息,编写代码效率极低。因此,希望能够通过自己写博客来记录一下Android学习过程中遇到的问题以及基本知识点的总结,为日后进一步的学习和工作打下基础。废话不多说,让我开始吧。

今天下午一直在调试Activity退出后内存没有被释放,再次进入后会重新创建一些对象导致耗费的内存增加,具体的代码主要是为了实现通过BindService获取音乐播放进度,并根据进度更新音乐主UI上进度条和歌词显示,在这里我采用了Timer和TimerTask来实现不间断的更新,但是由于对Android的多线程理解不够深入导致在Activity终止后,并没有及时的将Timer取消掉,以至于原有的Activity占用的内存不能被JavaGC回收掉,导致每次退出后再进入Activity都会产生内存泄漏问题。经过自己的实验,在Activity中的onDestory()
方法中调用mTimer.cancle();即可解决问题,同时在onDestory() 方法中还需要调用unbindService(sc)来解除绑定,以及handler.removeCallbacks(runable);实现handler的终止。从而极大的改善的应用内存问题 同时附上释放ImageView 、TextView所占用的资源 private void releaseImageView(ImageView imageView) {
Drawable d = imageView.getDrawable();
if (d != null)
d.setCallback(null);
imageView.setImageDrawable(null);
imageView.setBackgroundDrawable(null);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息