onCreate() 是否在 commit() 之后调用?

Does onCreate() called after commit()?

  private class DrawerItemClickListener implements ListView.OnItemClickListener {

       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           selectItem(position);

       }
   }

private void selectItem(int position) {
        Fragment fragment = new PlanetFragment();
        Bundle args = new Bundle();
        args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);

        fragment.setArguments(args);

        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

        mDrawerList.setItemChecked(position, true);
        setTitle(mPlanetTitles[position]);

        mDrawerTitle=mPlanetTitles[position];
        mDrawerLayout.closeDrawers();


    }

我的应用程序是一个带有 drawer.The 八个行星抽屉导航的演示 demo.When 你点击抽屉上 ListView 显示的一个项目,片段上的行星图片会改变。

这是我的困惑:

我认为 FragmentonCreateonCreateView 方法将调用“fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();”的子序列。

但实际上,他们是在onItemClick()完成后才打电话来的。为什么? 提前致谢。

如果您阅读提交方法的文档,它会说:

Schedules a commit of this transaction. The commit does not happen immediately; it will be scheduled as work on the main thread to be done the next time that thread is ready.

由于 selectItem 也在主线程上,提交将在 selectItem returns 之后发生(但不一定在之后!)。

是的。 Commit 只会 begin/schedule 提交片段的过程。

这里有一个很好的生命周期diagram,注意所有的回调都scheduled/posted在主线程