Android 理解堆栈和内存中的片段

Android 理解堆栈和内存中的片段,android,memory-leaks,android-fragments,Android,Memory Leaks,Android Fragments,我有一个带有FrameLayout的活动,其中片段在导航过程中被替换,如下所示: import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; // ... // fragMap is a

我有一个带有FrameLayout的活动,其中片段在导航过程中被替换,如下所示:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

// ...
// fragMap is a HashMap<String,Class<?>> mapping fragments classes
Fragment frag;
Class<?> classa = fragMap.get(s);
frag = (Fragment) classa.newInstance();

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right ,R.anim.slide_in_right, R.anim.slide_out_left);
ft.addToBackStack(null);
ft.replace(R.id.fragcontainer,  frag);
ft.commit();

但一切都没有改变。我还检查了在返回时对每个片段调用了
ondestory
,并且正在调用它。

有人能帮我理解一下吗?我使用了错误的模式还是什么?

要了解Backbackback,请参考android核心工程师,它可能会给你一些帮助。

嘿,lelloman,你有什么解决方案吗?@Amrendra嘿,我实际上没有得到解决方案,但我没有任何问题(从未出现内存不足异常),所以我假设这是正常的行为。我只是想知道为什么会是这样,你有什么实际问题吗?还是只是好奇?@Llleloman这不仅仅是好奇,我也有同样的问题,从来没有忘记过例外。即使在活动销毁之后,内存也不会被释放GC@Amrendra是的,这听起来像是同一种情况,我的观点是,只要你没有出现内存异常,我们就可以假设情况已经得到控制(通过android框架)。您可以尝试越来越多地分配对象,看看片段使用的内存是否被释放。如果您分配的内存与片段使用的内存相加,则会出现问题
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);