我现在正在研究主要活动扩展FragmentActivity(支持库)的Android应用程序。此活动包含ViewPager视图,哪个适配器为FragmentStatePagerAdapter。确切地说,适配器是一个自定义子类,它扩展了FragmentStatePagerAdapter。
Adapter类具有getItem()方法来返回Fragment实例。我将这些片段存储在SparseArray中,以便每次调用getItem()时都不创建新片段。当活动被销毁时,我清除了这个数组,所以我希望在重新创建活动时再次创建所有这些片段。
有一个场景:用户启动应用程序,然后进入Android的Home(Launcher)屏幕,与其他应用程序一起工作,然后Android OS杀死我们的应用程序以释放内存。当用户回到我们的应用程序时(它从一开始就没有重新启动,但是从用户已经离开它的地方重新创建并恢复),我会看到以下一系列回调调用:
Application: onCreate() called
Fragment: onAttach() called
Fragment: onCreate() called
Activity: onCreate() called
Fragment: onViewCreated() called
Activity: onStart() called
有多个Fragment(ViewPager为当前的一个调用getItem(),另外两个调用它的邻居 - next和previous),但我们考虑只有一个片段来简化它。
我曾经认为活动的onCreate()应该早于片段调用。当应用程序从之前被操作系统杀死的后台状态恢复时,会发生 only 。
我想在显示此活动中的任何内容之前执行一些后台操作(包括片段,所以我不希望它们的onCreate()方法如此早地调用)。如何在描述的情况下执行此操作?
答案 0 :(得分:0)
我发现最好使用onActivityCreated()回调来确保此时创建主机活动。因此,没有必要在Fragment的onCreate()方法中使用UI做一些重要的事情。