我工作的一个简化的音频播放器需要停止,如果用户从应用程序(home键,任务切换,任务中断移开打,屏幕关闭等)。我可以让音频继续在后台播放,并打开带有暂停/停止选项的通知栏,但我的用户几乎不懂电脑,有些可能无法在没有帮助的情况下停止音频。
问题
为了阻止声音,我需要知道当应用程序移动到焦点的活性被破坏之前。 Android提供了两种方法onStop和onPause,它们指示正在发生的事情,但不是什么。如果可能的话,我怎么知道活动在什么时候被改变方向?
未能解决
我可以使用内的onPause isFinishing()(或的onStop /的onDestroy)来检查应用程序是否关闭和停止音频。但是这只能告诉我们应用何时关闭。它不区分移动到背景和旋转。
IsChangingConfigurations是可以解决我的问题,一个有趣的功能,但是这需要11 API和我感兴趣的支持API 10
另一种解决方案似乎是一个糟糕的黑客。 OrientationChangeListener(如this solution)看起来很理想,但它只是注意到活动关闭并重新启动后方向已更改。
与上述选项类似,onConfigurationChanged只在制作完成后报告方向更改。
有缺陷的,但可能的解决方案
一种解决方案是有当它已经失去连接的活动,然后在设定的时间量之后自动暂停媒体播放器服务的通知。这绝对是一个可行的解决方案,但并不理想。多少时间是合适的?如果平板电脑运行缓慢并且旋转花费的时间比平常长,会发生什么情况?如果没有更好的选择,我会回到这个解决方案。这看起来像一个黑客,容易出错。
为什么你不加'机器人:configChanges =“方向|键盘| keyboardHidden“'到您的''声明中,Android会调用'onConfigurationChanged()'而不会破坏你的'Activity'。然后您可以自己处理配置更改。 –