当用户决定按下“主页”时,我希望在后台继续播放。在电影中。
我按照指南进行了操作: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();
}
我的问题很少。
我发现注释掉行if (! requestVisibleBehind(true))
并没有返回想要的结果。我很困惑。
requestVisibleBehind()是@deprecated,onVisibleBehindCanceled()也是如此。还有其他选择吗?当我试着研究这些函数的作用时,我发现时也会感到惊讶(requestVisibleBehind()同样如此。
public void onVisibleBehindCanceled()
{
throw new RuntimeException("Stub!");
}
有一次,我很确定背景播放结果来自其他动作,但是当我评论出之前提到的代码碎片时,我没有得到想要的结果(如果我不这样做,我会得到这样的结果)评论它。)
答案 0 :(得分:3)
我不知道我是否正确理解你的要求。根据谷歌的body{
height: 100vh;
padding: 0;
margin: 0;
}
对Android操作系统的请求,如果要进入后台这个活动应该继续播放,它返回的布尔值是你是否可以指望它可以继续播放(这是决定的)由OS)。
关于requestVisibleBehind(true)
,当应用程序由用户或操作系统完成或者onVisibleBehindCanceled()
返回false时调用它,基本上它的作用是给你500ms来处理所使用的所有资源你的应用程序,在那500ms之后,操作系统将破坏你的活动以释放这些资源。
总而言之,这些确实是负责您的应用程序继续在后台播放的人。
关于弃用,请记住android O具有使用PIP的能力,因此可能是这种改变的原因。
希望有所帮助