Android Fragments - 我们真的应该保存状态吗?

Android Fragments - Should we really save state?

我用这段代码实现了一个简单的activity:

public class MainActivity extends AppCompatActivity implements Fragment_1.Operations{

Fragment_1 fragment_1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fragmentactivity);
    fragment_1=(Fragment_1)getSupportFragmentManager().findFragmentByTag("fragment_1");
}
//called on buttonclick, fired from a button existing in R.layout.fragmentactivity
public void createFragment(View view){

    if (getSupportFragmentManager().findFragmentByTag("fragment_1")==null){

        fragment_1=new Fragment_1();

        FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();

        transaction.add(R.id.fragmentactt,fragment_1,"fragment_1");
        transaction.commit();
        getSupportFragmentManager().executePendingTransactions();
    }
    else{

        fragment_1=(Fragment_1)getSupportFragmentManager().findFragmentByTag("fragment_1");
    }

    //Simply adding item to the listview contained in fragment_1.
    fragment_1.add("Project #1");
    fragment_1.add("Project #2");
    fragment_1.add("Project #3");
}

    //callback of interface "Operations"
    @Override
    public void buttonClicked() {

        FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();

        if (fragment_1.isAdded()){

            transaction.remove(fragment_1);
            //transaction.addToBackStack(null);
            transaction.commit();
            getSupportFragmentManager().executePendingTransactions();
        }
    }
}

好吧,疑问来自于没有 "onSaveInstanceState" 需要实施的事实,一切都得到 "saved" 没有任何问题。

那么,我为什么要使用 putfragment 和 getFragment?是否需要调用这些方法以避免 OS 杀死应用程序进程时它们会丢失?这是我可以想象强制执行 onSaveInstanceState 和 onRestoreInstanceState 方法的唯一原因。

感谢任何帮助。

Activity 和片段生命周期是相关联的,因此当为 activity 调用诸如 onResume 之类的任何回调方法时,它也会为片段调用.

putFragmentgetFragment 帮助 activity 管理其子片段的生命周期。 activity 还必须保存实例状态。

为了activity独立,片段可以管理自己的实例状态。