> API可以添加(或替换)模式对话框
> API可以通过编程方式关闭对话框,或者用户可以通过按下按钮来关闭对话框
我的API是否通过不断向backstack添加片段来创建内存泄漏?
public class DialogFragmentUtils {private static final String DIALOG_TAG = "dialogTag";public static voID showDialogFragment(@Nullable Activity activity,@NotNull Fragment fragment) { if (activity instanceof FragmentActivity) { FragmentActivity fragmentActivity = (FragmentActivity) activity; FragmentManager fm = fragmentActivity.getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); Fragment prev = fm.findFragmentByTag(DIALOG_TAG); if (prev != null && prev.isAdded()) { ft.remove(prev); } ft.add(fragment,DIALOG_TAG); ft.addToBackStack(null); ft.commit(); }}public static voID dismissDialogFragment(@Nullable Activity activity) { if (activity instanceof FragmentActivity) { FragmentActivity fragmentActivity = (FragmentActivity) activity; FragmentManager fm = fragmentActivity.getSupportFragmentManager(); DialogFragment dialog = (DialogFragment) fm.findFragmentByTag(DIALOG_TAG); if (dialog != null) { dialog.dismiss(); } }}}解决方法 是的,它容易出现内存不足,而不是内存泄漏.所有后台堆栈片段都使用硬引用保存在内存中.因此,如果你在后台堆栈中保留了大量的碎片,那么你将会失去记忆.
看看这里:When a Fragment is replaced and put in the back stack (or removed) does it stay in memory?
更新:我看到你的DIALOG_TAG没有改变所以你一次只在一个堆栈中保留一个片段,因为如果它存在,你删除旧的片段.在这种情况下,您可能没有内存不足的问题.
总结以上是内存溢出为你收集整理的android – Backstack和内存泄漏全部内容,希望文章能够帮你解决android – Backstack和内存泄漏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)