android – 在FragmentPagerAdapter中保留片段的实例
作者:互联网
是否可以在FragmentPagerAdapter中保留为FragmentPagerAdapter创建的每个片段的实例?
像这样的东西:
@Override
public Object instantiateItem(ViewGroup container, int position)
switch(position){
case 0:
fragment0 = super.instantiateItem(container, position);
return fragment0;
case 1:
fragment1 = super.instantiateItem(container, position);
return fragment1;
default:
return super.instantiateItem(container, position);
}
}
我会遇到内存问题吗?
我的想法是做一些像MyFragmentPagerAdapter.fragment0这样的东西,以获得对片段的引用.
解决方法:
该方法的问题在于即使您维护引用,FragmentManager也可能创建片段的新实例.在这种情况下,同一个片段的几个实例将在内存中(泄漏),并且您维护的引用将以可能甚至不显示的实例为目标.换句话说,它不安全.
然而,安全的是在片段中保持活动的参考.
在您的片段中,您覆盖
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
home = (YourFragmentActivity) activity;
}
public void onCreate(Bundle savedInstanceState) {
home.setThisFragTag(getTag());
}
在你的FragmentActivity中
public void ThisFragTag(String tag) {
this.fragTag = tag;
}
现在,在您的活动中,您可以暂停当前显示的片段实例
(YourFragmentClass) getSupportFragmentManager().findFragmentByTag(fragTag);
您可以对多个片段重复此操作
标签:android,android-fragments,fragmentpageradapter 来源: https://codeday.me/bug/20190725/1536498.html