【发布时间】:2013-03-07 13:19:43
【问题描述】:
我现在正在开发主 Activity 扩展 FragmentActivity(支持库)的 Android 应用程序。该活动包含ViewPager 视图,适配器为FragmentStatePagerAdapter。确切地说,适配器是一个自定义子类,它扩展了 FragmentStatePagerAdapter。
Adapter 类有 getItem() 方法来返回一个 Fragment 实例。我将这些片段存储在 SparseArray 中,而不是在每次调用 getItem() 时创建新片段。当activity被销毁时,我清空了这个数组,所以我希望在activity被重新创建时再次创建所有这些片段。
有一种情况:用户启动应用程序,然后转到 Android 的主(启动器)屏幕,与其他应用程序一起工作,然后 Android 操作系统终止我们的应用程序以释放内存。当用户回到我们的应用程序时(它不是从一开始就重新启动,而是从用户离开的地方重新创建和恢复),我观察以下回调调用序列:
Application: onCreate() called
Fragment: onAttach() called
Fragment: onCreate() called
Activity: onCreate() called
Fragment: onViewCreated() called
Activity: onStart() called
有不止一个 Fragment(ViewPager 为当前一个调用 getItem(),而它的两个相邻 - 下一个和上一个),但让我们考虑只有一个 Fragment 来简化它。
我曾经认为应该比片段更早地调用活动的 onCreate()。这仅在应用从之前被操作系统杀死的后台状态中恢复时发生。
我想在显示此活动中的任何内容之前执行一些后台操作(包括片段,所以我不希望这么早调用它们的 onCreate() 方法)。在所描述的情况下,我该怎么做?
【问题讨论】:
-
何时检查和更新数据取决于您的应用实际执行的操作。如果您的应用程序具有从远程源提取的动态数据,那么您可能希望每隔 15-30 分钟更新一次数据。如果您的应用正在显示实时结果,您可能需要更频繁地轮询。如果您的应用程序使用静态数据,那么您只需加载一次数据而无需再次检查。在不知道应用在做什么的情况下,很难知道何时应该检查数据。
-
好的,让我们考虑这不是数据加载,而是在显示任何内容之前要执行的一些通用操作。最后我可能问错了问题,因为我很感兴趣为什么会这样?编辑了问题。
标签: java android android-fragments android-viewpager