gpt4 book ai didi

java - 安卓/Java : why does my ConstraintLayout leak?

转载 作者:搜寻专家 更新时间:2023-11-01 09:22:20 26 4
gpt4 key购买 nike

根据 LeakCanary,我的应用存在内存泄漏

就是MyFragmentConstraintLayout。我试图通过使 onDestroyView() 中的 View 无效来修复它,但没有成功。

请注意,我正在 MyFragment 中加载 MyNestedFragment

MyFragment.java

public class MyFragment extends Fragment {
private View view;
private FragmentManager fragmentManager;
private Map<String, Fragment> fragments = new HashMap<String, Fragment>();
private Fragment fragment;
private ConstraintLayout contentContainer;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.myfragment_layout, container, false);

fragmentManager = getFragmentManager();

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.myfragment_tablelayout);
tabLayout.addOnTabSelectedListener(onTabSelectedListener);

contentContainer = view.findViewById(R.id.myfragment_contentcontainer);

if (getContext() != null) {
showFragment(MyNestedFragment.class);
}

return view;
}

public void showFragment(Class fragmentClass) {
try {
if (fragments.containsKey(fragmentClass.toString())) {
fragment = fragments.get(fragmentClass.toString());
} else {
fragment = (Fragment) Class.forName(fragmentClass.getName()).newInstance();
}

fragmentManager.beginTransaction().replace(R.id.myfragment_contentcontainer, fragment).commit();
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void onDestroyView() {
super.onDestroyView();
view = null;
fragmentManager = null;
fragments = null;
contentContainer = null;
}
}

知道如何修复内存泄漏吗?

提前致谢!

编辑 1
ConstraintLayout依赖:
实现 'com.android.support.constraint:constraint-layout:1.1.3'

最佳答案

如果要显示嵌套 fragment ,请使用 childFragmentManager 而不是 fragmentManager

关于java - 安卓/Java : why does my ConstraintLayout leak?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53776632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com