我的APP确实有多个片段和活动,这些活动中的大多数都持有不同的片段,这是为了让我的组件易于重用。当我将其他活动加载到活动堆栈时,我遇到了一个问题。
案例
启动ActivityA-->ActivityB-->ActivityC
所有这些活动都包含不同的片段,但问题是何时从其中的片段ActivityB
启动时不会被调用,尽管 onStop 被调用。ActivityA
ActivityA
onDestroyView
当我继续向堆栈应用程序添加太多活动时,我的应用程序允许从一个到另一个进行无限次数的导航,逐渐引发 OOM 异常。
在下面找到我用来将片段添加到片段回栈的代码。
final android.support.v4.app.FragmentTransaction ft =
fragmentManager.beginTransaction();
if(transaction.mInAnimation != FragmentTransaction.FRAGMENT_NO_ANIMATION &&
transaction.mOutAnimation != FragmentTransaction.FRAGMENT_NO_ANIMATION) {
ft.setCustomAnimations(transaction.mInAnimation, transaction.mOutAnimation);
}
String tag;
if(transaction.isRoot){
clearFragmentStack();
tag = "0";
}else {
tag = fragmentManager.getBackStackEntryCount() + "";
}
final AtomicFragment fragment = transaction.compile();
ft.replace(transaction.mFrameId, fragment, tag);
ft.addToBackStack(tag);
ft.commit();