英文:
Android ViewPager: Call onStop() to set ExoPlayer instance to null
问题
我正在寻找一个解决方案,用于我的项目,我在项目中使用ViewPager2,我需要一种方法在用户滑动时调用onStop()
,并且我想将ExoPlayer实例设置为null
。
英文:
I am looking for a solution for my project, where I am working with ViewPager2, and I need some way to call onStop()
when the user swipes, and I want to set ExoPlayer instance to null
.
答案1
得分: 0
你可以通过实现一个OnPageChangeListener接口并重写其方法来实现这一点,有一个方法onPageSelected(position: Int),当页面变化时会触发此方法,因此你可以比较页面的位置并为你的ExoPlayer设置逻辑。
英文:
You can do this by implementing a interface OnPageChangeListener and overriding its methods, There is method onPageSelected(position: Int) this method will be triggered when page change so you can compare position of your page and put you logic for your ExoPlayer.
答案2
得分: 0
- 注册ViewPager页面变更回调:
viewPager.registerOnPageChangeCallback(doppelgangerPageChangeCallback)
- 设置pageChangeCallback监听器:
var pageChangeCallback = object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
releasePlayer()
}
}
- 初始化和释放播放器的函数如下:
fun initializePlayer() {
player = ExoPlayerFactory.newSimpleInstance(this)
playerView.setPlayer(player)
}
fun releasePlayer() {
if (player != null) {
player.release()
player = null
}
}
英文:
Please try the following:-
-
Register viewpager page change callback:
viewPager.registerOnPageChangeCallback(doppelgangerPageChangeCallback)
-
Set pageChangeCallback listener:
var pageChangeCallback = object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { releasePlayer() } }
3.Function to initialize and release player below:
fun initializePlayer() {
player = ExoPlayerFactory.newSimpleInstance(this);
playerView.setPlayer(player);
}
fun releasePlayer() {
if (player != null) {
player.release();
player = null;
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论