我使用ActionBarSherlock兼容性库,并在Action Bar的选项卡之间进行分页时遇到奇怪的行为。每个标签都包含一个简单的片段,没什么特别的。我观察到即使没有屏幕方向改变,片段的onCreateView
方法也经常被调用。它看起来像某种预缓存。我有三个选项卡,当创建活动时,仅为前两个片段调用onCreateView
。在我向前翻页一步之前,最后一个片段不会创建视图。从最后一个选项卡到第一个选项卡进行分页时会发生相同的行为
有谁知道为什么会这样?当父活动完成创建时,我会假设一次创建所有视图。我不想一次又一次地创建视图,片段没有变化,它们是静态的。它没有任何意义,导致分页有点迟缓......
答案 0 :(得分:2)
几个小时后,我发现那里发生了什么。 ViewPager有一个默认设置DEFAULT_OFFSCREEN_PAGES,它设置要存储在ViewPager视图容器中的最大视图数(在我的例子中是片段)。显然是某种资源优化;不可见的视图可以被丢弃并在需要时恢复。
通过我忽略的setOffscreenPageLimit(int limit)
setter来更改此值没有什么比这更容易了。
答案 1 :(得分:0)
我认为有意识地增加了用户体验。 与实现兼容性lib的ViewPager相同。
无论如何,有消息来源。