Android:在onDestroy()中释放资源;方法

Android:在onDestroy()中释放资源;方法,android,Android,我知道系统可能会在不调用onDestroy()的情况下终止活动。假设我有一个即使在不可见的情况下也能运行的MediaPlayer,我将在onDestroy()方法中释放该播放器 现在,如果系统在调用onPause()后决定终止该活动,但从未调用过onDestroy(),这对我的MediaPlayer意味着什么?它曾经发行过吗?这对于照相机来说是一个更大的问题,因为我认为它需要被释放,以便其他活动使用它。在onPause()之后,很少有人在活动中播放媒体。你当然应该释放它,因为它会造成泄漏。相反,

我知道系统可能会在不调用onDestroy()的情况下终止活动。假设我有一个即使在不可见的情况下也能运行的MediaPlayer,我将在onDestroy()方法中释放该播放器


现在,如果系统在调用onPause()后决定终止该活动,但从未调用过onDestroy(),这对我的MediaPlayer意味着什么?它曾经发行过吗?这对于照相机来说是一个更大的问题,因为我认为它需要被释放,以便其他活动使用它。

在onPause()之后,很少有人在活动中播放媒体。你当然应该释放它,因为它会造成泄漏。相反,您的媒体应该在没有onPause()问题的服务中播放(服务正在运行或未运行),然后您的活动与该服务进行交互。

在onPause()之后,您很少从活动中继续播放媒体。你当然应该释放它,因为它会造成泄漏。相反,您的媒体应该在没有onPause()问题的服务中播放(服务正在运行或未运行),然后您的活动与该服务交互。

是的,使用服务是有意义的!但我只是想用一个mediaplayer来简化它。(我想我不应该这样做)一个更好的场景是,在主视频活动中打开摄像机进行MediaRecorder预览,如果你想在其上进行另一个透明活动,而摄像机预览在下面仍然可见。我相信框架只会在主活动上调用onPause()然后调用onStop()。因此,如果框架现在决定终止主活动并跳过onDestroy(),那么camera将永远不会被释放-是这样吗?是否有任何解决方法来保证camera.release()?您是对的。必须在onPause()上释放相机。这是有原因的。如果您“控制”预览顶部显示的活动。由于系统广播需要摄像头或音乐服务,您无法控制某项服务的启动时间,甚至无法控制系统调用另一项活动的时间。在这种情况下,系统会因为您没有释放相机而对您非常生气:)您应该避免在相机预览上方显示其他活动。而是使用getWindowManager().addView()在顶部添加“看起来”像新活动的内容。谢谢!它整天都在烦我:)是的,使用服务是有意义的!但我只是想用一个mediaplayer来简化它。(我想我不应该这样做)一个更好的场景是,在主视频活动中打开摄像机进行MediaRecorder预览,如果你想在其上进行另一个透明活动,而摄像机预览在下面仍然可见。我相信框架只会在主活动上调用onPause()然后调用onStop()。因此,如果框架现在决定终止主活动并跳过onDestroy(),那么camera将永远不会被释放-是这样吗?是否有任何解决方法来保证camera.release()?您是对的。必须在onPause()上释放相机。这是有原因的。如果您“控制”预览顶部显示的活动。由于系统广播需要摄像头或音乐服务,您无法控制某项服务的启动时间,甚至无法控制系统调用另一项活动的时间。在这种情况下,系统会因为您没有释放相机而对您非常生气:)您应该避免在相机预览上方显示其他活动。而是使用getWindowManager().addView()在顶部添加“看起来”像新活动的内容。谢谢!它整天都在烦我:)