android开发时,finish()跟System.exit的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发时,finish()跟System.exit的区别相关的知识,希望对你有一定的参考价值。

 

这两天在弄Android,遇到一个问题:所开发的小游戏中有背景音乐,玩的过程中始终有音乐在放着,然后在我退出游戏后,音乐还在播放!

我看了一下我最开始写的退出游戏的代码,就是简单的finish()语句。我想应该是这个地方出了问题。后来想了想,以前好像见过有用System.exit(0)退出游戏的,然后就尝试了一下,发现问题果然解决了。

现在来彻底弄清楚两者的区别。

首先一个Activity是有生命周期的,onCreate,onStart,onResume,onPause,onStop,onDestroy...

finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理;当调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。

其实android的机制决定了用户无法完全退出应用,当你的application最长时间没有被用过的时候,android自身会决定将application关闭了。

以上是关于android开发时,finish()跟System.exit的区别的主要内容,如果未能解决你的问题,请参考以下文章

分享:Android入门开发之销毁activity

Android开发之Activity跳转动画以及finish动画

android开发 怎么释放activity的全部内存

Activity在onCreate和onResume中finish时,生命周期的不同表现

Android开发 怎么返回上上个activity

Android - 返回上一个界面finish()方法