当用户决定在电影期间按“主页”时,我想在后台继续播放.
我按照指南进行了操作:https://developer.android.com/training/tv/playback/options.html
并编写了以下代码(WHICH WORKS):
@Override public void onPause() { super.onPause(); if (mVideoView.isPlaying()) { // Argument equals true to notify the system that the activity // wishes to be visible behind other translucent activities if (! requestVisibleBehind(true)) { // App-specific method to stop playback and release resources // because call to requestVisibleBehind(true) Failed stopPlayback(); } } else { // Argument equals false because the activity is not playing requestVisibleBehind(false); } } @Override public void onVisibleBehindCanceled() { // App-specific method to stop playback and release resources stopPlayback(); super.onVisibleBehindCanceled(); }
我几乎没有问题.
如果(!requestVisibleBehind(true))没有返回想要的结果,我发现注释掉行.我很困惑.
>该行不应该返回一些布尔值吗?如何启用后台播放?使用调试器,提到“if”成功并停止播放器.不确定发生了什么以及如何发生,所以也许有人可以解释我.
> requestVisibleBehind()是@deprecated,因此是onVisibleBehindCanceled().还有其他选择吗?当我试着研究这些函数的作用时,我发现时也会感到惊讶(requestVisibleBehind()同样如此.
public void onVisibleBehindCanceled() { throw new RuntimeException("Stub!"); }
有一次,我很确定后台播放结果是来自其他动作,但是当我注释掉之前提到的碎片代码时,我没有得到想要的结果(如果我不评论它我会得到).
解决方法
我不知道我是否理解你的要求.根据google的requestVisibleBehind(true)请求安卓操作系统,如果要进入后台,这个活动应该继续播放,它返回的布尔值是你是否可以指望它可以继续播放或者不是(这取决于操作系统).
关于onVisibleBehindCanceled(),当应用程序由用户或操作系统完成或者requestVisibleBehind返回false时调用它,实际上它的作用是让你500ms处理应用程序使用的所有资源,在操作系统将破坏500ms之后您的活动是为了释放这些资源.
总而言之,这些确实是负责您的应用程序继续在后台播放的人.
关于弃用,请记住android O具有使用PIP的能力,所以也许这就是这种改变的原因.
关于onVisibleBehindCanceled(),当应用程序由用户或操作系统完成或者requestVisibleBehind返回false时调用它,实际上它的作用是让你500ms处理应用程序使用的所有资源,在操作系统将破坏500ms之后您的活动是为了释放这些资源.
总而言之,这些确实是负责您的应用程序继续在后台播放的人.
关于弃用,请记住android O具有使用PIP的能力,所以也许这就是这种改变的原因.
希望它有所帮助