我有一个带有 ViewPager 的 FragmentActivity - 这个 ViewPager 包含三个 ListViews - 每个都注定有自己独特的适配器(和独特的数据集)。
我想使用 AsyncTaskLoader 来填充这些适配器,但仅当在 ViewPager 中选择给定视图时。
是否需要在活动的 onCreate 方法中初始化加载程序?(下面的代码)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_foo);
getSupportLoaderManager().initLoader(0, null, this);
getSupportLoaderManager().initLoader(1, null, this);
getSupportLoaderManager().initLoader(2, null, this);
}
还是可以交互调用 initLoader(...) ,例如 OnPageChangeListener.onPageSelected 的侦听器的结果?
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int newPage) {
getSupportLoaderManager().initLoader(newPage, null, this);
}
...
}
如果用户可能只查看寻呼机中的第一个视图,我想避免必须预先执行可能 3 个耗时的加载程序。
编辑: 或者让 ViewPager 为每个视图使用一个 Fragment 会是一个更好的设计,并且每个 Fragment 将负责管理自己的加载器?