我正在使用
ViewPager2
和FragmentStateAdapter
来显示5个fragments
。每个fragment
都有一个ExoPlayer
实例。我保持着ViewPager2.setOffscreenPageLimit(1)
,它对于加载fragments
很有效。然而,当我向下滚动ViewPager2
到pos4
时,pos2
和pos1
应该调用onStop()
,onDestroyView()
和onDestroy()
。但是这并没有发生。
除非我按onBackPress()
, 否则这些方法都不会执行。在实现中还有什么我遗漏的地方吗?
我想在onDestroyView()
上执行exoPlayer.release()
以释放应用程序的内存。
以下是代码
Activity
List<Post> postsList = response.getPosts();
ViewPagerAdapter adapter = new ViewPagerAdapter(this, postsList);
binding.pager.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
binding.pager.setOffscreenPageLimit(1);
binding.pager.setAdapter(adapter);
ViewPagerAdapter
public class ViewPagerAdapter extends FragmentStateAdapter {
private List<Post> postList;
public ViewPagerAdapter(@NonNull FragmentActivity fragmentActivity, List<Post> postList) {
super(fragmentActivity);
this.postList = postList;
}
@NonNull
@Override
public Fragment createFragment(int position) {
return new PostFragment(postList.get(position), position);
}
@Override
public int getItemCount() {
if (postList == null) return 0;
return postList.size();
}
}
Updated