Android 如何控制片段和片段PageRadapter的生命周期
我试图弄清楚,当与FragmentPagerAdapter组合时,是否有一种方法可以控制片段的生命周期何时被处理 我的目标是在用户将当前可见片段滑动到视图中时,触发该片段的AsyncTask 到目前为止,我只能创建一个应用程序,当FragmentPagerAdapter代码运行时,该应用程序会实例化我想要的所有可用片段,一次完成每个片段的“完整启动生命周期” 我希望片段的AsyncTask在片段进入视图时被触发,在它离开视图时被取消。我已经尝试覆盖每个片段上的所有可用回调,但我还没有找到一个回调或侦听器,当显示/未显示特定片段时,该回调或侦听器会做出反应Android 如何控制片段和片段PageRadapter的生命周期,android,lifecycle,fragment,Android,Lifecycle,Fragment,我试图弄清楚,当与FragmentPagerAdapter组合时,是否有一种方法可以控制片段的生命周期何时被处理 我的目标是在用户将当前可见片段滑动到视图中时,触发该片段的AsyncTask 到目前为止,我只能创建一个应用程序,当FragmentPagerAdapter代码运行时,该应用程序会实例化我想要的所有可用片段,一次完成每个片段的“完整启动生命周期” 我希望片段的AsyncTask在片段进入视图时被触发,在它离开视图时被取消。我已经尝试覆盖每个片段上的所有可用回调,但我还没有找到一个回调
我正在使用Android支持包v4和ViewPager作为应用程序的基础。您可能正在寻找
.setOnPageChangedListener()
-方法。调用mViewPager.setOnPageChangedListener(新的OnPageChangedListener(){…})
或在适配器中实现ViewPager.OnPageChangedListener
(并设置mViewPager.setOnPageChangedListener(mAdapter)
)
在onPageSelected()
-方法中,执行asynctask并取消以前的任何实例。这样,当页面(完全)可见时,将执行异步任务。如果希望在用户开始滚动时立即执行它,请改为操作onPageScrollStatechanged()
和onPageScrolled()
-方法
例如:
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int state) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int position) {
// check if asyncTask exists and is running; if so, cancel it.
if(mAsyncTask != null) {
if(mAsyncTask.getStatus() != AsyncTask.Status.FINISHED) {
mAsyncTask.cancel(true); // cancel asynctask if activity is destroyed before it's finished
}
mAsyncTask = null;
}
mAsyncTask = new MyAsyncTask().execute("myParam");
}
});
这正是我所需要的。马上就到!