[英]How to keep an image in an Android activity during an orientation change?
[英]Android: Keep MediaPlayer running during Activity screen orientation update
我使用MediaPlayer播放MP3。 目前我通过使用禁用屏幕方向更改
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation"
在清单中。 我现在想要支持横向模式 - 即删除那些标签 - 但是存在的问题是在销毁/创建周期期间玩家停止然后重新启动。 这没关系,我甚至在onPause()
手动执行此操作,以便在活动进入后台时停止播放器。
为了使它在方向更改期间保持运行,我尝试将其设置为静态(并使用应用程序上下文创建它一次)。 当然,当我现在删除onPause()
中的player.stop()
时,它会做我想要的 - 好吧, 直到 Activity进入后台。
那么,有两个问题:
onStop()
后确定是否将直接重新创建活动 MediaPlayer
运行,但在应用程序进入后台时停止它? 你有没有看过使用onConfigurationChanged()回调来处理这个逻辑?
关于你的问题如何可靠地确定你的Activity是否因配置更改而被销毁,请参阅我的答案: 如何在屏幕旋转期间保存/恢复(更新)ref对话框?(我需要参考onCreate方法的活动。 )
有了这个,你的第二个问题的答案应该很容易。
尝试在不同的线程中运行MediaPlayer
。
您可以在此线程中添加一个更复杂的API,您可以从onCreate
/ onStop
/ on*
调用该API
如果您正在使用片段(并且您应该:P),那么在片段onCreate()调用中调用setRetainInstance(true)
将使这个问题完全消失。
请参阅以下答案: https : //stackoverflow.com/a/31466602/994021
这是我为此目的而创建的POC。 厌倦了为不同的项目一遍又一遍地解决这个问题。 我希望它有所帮助。
我真的建议从谷歌人切换到像ExoPlayer这样的第三方播放器: https : //github.com/google/ExoPlayer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.