Android 当活动在后台被销毁时,如何删除片段

Android 当活动在后台被销毁时,如何删除片段,android,android-fragments,Android,Android Fragments,当我的应用切换到后台时,系统内存很低,android会破坏我的活动。那时,我想删除附加到活动的片段,这样当活动切换到前台时,我就可以避免该活动的任何异常行为。我这样做: @Override public void onSaveInstanceState(Bundle outState) { FragmentManager fm = getSupportFragmentManager(); AbstractBaseViewFragment previous

当我的应用切换到后台时,系统内存很低,android会破坏我的活动。那时,我想删除附加到活动的片段,这样当活动切换到前台时,我就可以避免该活动的任何异常行为。我这样做:

@Override
    public void onSaveInstanceState(Bundle outState) {
        FragmentManager fm = getSupportFragmentManager();
        AbstractBaseViewFragment previous = (AbstractBaseViewFragment) fm.findFragmentByTag(FRAGMENT_TAG);
        if (previous != null) {
            fm.beginTransaction().remove(previous).commitAllowingStateLoss();
            fm.executePendingTransactions();
        }
        super.onSaveInstanceState(outState);
    }

所以我想问:有没有其他好主意来完成这个目标?我的方法会导致崩溃吗?

你可以试试这个:
ft.detach(上一个)


当你的活动被破坏时,里面的碎片也会被破坏。你根本不需要担心它。@Varundroid不,如果活动在后台被破坏,当它切换到前台时,附加到它的片段将自动重新创建,除非我删除那些片段,你实际上想做什么?为什么需要删除碎片?碎片造成了什么异常?我认为你从错误的角度看待这个问题。若应用程序在后台被破坏后在启动时崩溃,那个么代码就有问题了。我从未删除过我的任何片段,我的所有应用程序都运行良好。片段生命周期与活动生命周期紧密耦合。如果活动被破坏,碎片也会被破坏,除非你向我提供一些官方文档,说明你需要在代码中销毁碎片。我的意思是,当用户将我的应用程序切换到后台时,一段时间后,系统内存很低,然后我的应用程序中的活动将被销毁,附加到活动的片段也将被销毁。但当用户将我的应用程序切换到前台时,活动将被恢复,然后我发现片段将自动重新附加到活动,但我与此相关的数据尚未准备好,所以片段显示异常。所以我想首先删除它们,当活动在后台被销毁时,这样当它切换到前台时,片段不会自动重新连接到活动。我想等待数据准备就绪,然后我将创建片段并附加到活动,但现在它将自动,在活动被销毁和恢复之后
if (previous != null) {
                FragmentTransaction ft = fm.beginTransaction();
                ft.detach(previous);
                ft.remove(previous);
                ft.commitAllowingStateLoss();
... // the rest of your code
            }