最近开发Android应用,实现了用RadioGroup和ViewPager菜单导航栏的效果。但是在其中某个Fragment界面进行播放视频,切换到其他几个Fragment时,视频还在播放。
本以为在视频所在的Fragment中的某个生命周期中进行视频的pause()操作即可,但是将尝试了Fragment所有的声明周期函数,都无功而返,失败。
最后是通过懒加载的方式进行解决的:即用setUserVisibleHint回调函数解决setOffscreenPageLimit不能设置成不缓存页面的问题。有人说setUserVisibleHint才是fragment正真的onResume和onPause方法。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser){
// load data here:fragment可见时执行加载数据或者进度条等
}else {
// fragment is no longer visible:不可见时不执行操作
if (videoView != null){
videoView.pause();
}
if (mediaController != null){
mediaController.hide();
}
}
}
注意:本博客写的较为垃圾,需要优化,最近有点忙,后期会花时间整理,敬请见谅。