Это мой код в PagerAdapter (код котлина)
class SwipeAdapter : PagerAdapter {
var videoResources :ArrayList<Int>
lateinit var videoBackground : ScalableVideoView
private var ctx: Context
constructor(ctx: Context, videoResources: ArrayList<Int>) : super(){
this.videoResources = videoResources
this.ctx = ctx
}
override fun isViewFromObject(view: View?, `object`: Any?): Boolean {
return (view == `object` as FrameLayout)
}
override fun getCount(): Int {
return videoResources.count()
}
override fun instantiateItem(container: ViewGroup?, position: Int):View{
val layoutInflater = ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val rootView = layoutInflater.inflate(R.layout.view_breath_fragment_slide,container,false)
this.videoBackground = rootView.findViewById(R.id.videoBackground)
.....
try {
videoBackground.setRawData(videoResources.get(position))
videoBackground.setVolume(0f, 0f)
videoBackground.isLooping = true
videoBackground.prepare { videoBackground.start()}
} catch (ioe: IOException) {
//ignore
}
videoBackground.visibility = View.VISIBLE
....
container?.addView(rootView)
return rootView
}
override fun destroyItem(container: ViewGroup?, position: Int, `object`: Any?) {
container?.removeView(`object` as FrameLayout)
}
}
И это ошибка, которую я получил из-за того, что видео / мультимедиа продолжают воспроизводиться, пока я переключаю на другие приложения или просто захожу Home
A / OpenGLRenderer: Утечка двух объектов GPU!
A / libc: фатальный сигнал 6 (SIGABRT), код -6 в тиде 19002 (RenderThread)
Я пытаюсь выпустить видео / медиа, как:
if(videoBackground!=null)
videoBackground.release()
или
Я пытался уничтожить пункт:
override fun instantiateItem(container: ViewGroup?, position: Int):View{
val layoutInflater = ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val rootView = layoutInflater.inflate(R.layout.view_breath_fragment_slide,container,false)
rootView.findViewById(R.id.videoBackground).release()
но это не помогает, потому что он не обращается к объекту предыдущей страницы
другая неудачная попытка, но в основном такая же для MainActivity: (java)
viewPager.getAdapter().videoBackground.release()
еще много неудачных попыток, но я думаю, что этого уже достаточно, чтобы показать, что я иду по тому же кругу