我正在开发一个包含多个活动的应用程序。用户可以导航到任何一个活动。我从第一个主要活动开始播放背景音乐,并让它在整个应用程序中保持播放状态。现在,当用户按下HOME键时,我希望媒体播放器暂停播放,当用户回到应用程序时,它会再次开始播放。起初,我将媒体播放器设置为静态,并在onPause()中暂停音乐,在onResume()中播放音乐,但在切换活动时会出现抖动。我希望你能理解我的意思。有什么办法可以在按下HOME键时暂停播放,并在用户回来时重新开始播放吗?
请查看Activity.onUserLeaveHint() http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()。
当活动由于用户选择而要进入后台时,此方法作为活动生命周期的一部分调用。例如,当用户按Home键时,将调用onUserLeaveHint(),但是当来电导致呼叫中的活动自动被带到前台时,在被打断的活动上不会调用 onUserLeaveHint()。在调用此方法的情况下,它会在活动的onPause()回调之前立即调用。
我曾经遇到过同样的问题,并用一种不太优雅的方式解决了它:有一个全局静态播放器。在活动的onPause中,它调用播放器停止(但实际上并没有停止),在onResume中调用开始。在播放器的onStart中,我将音乐标记为正在播放。在onStop中,我将音乐标记为已停止,但实际上并没有停止它。在停止被调用后的1秒钟内醒来,如果最近一秒钟没有“startPlaying”,则停止音乐。
希望有更好的方法。