我的目标是在用户将其滑入视图时触发当前可见片段的AsyncTask.
截至目前,我只能创建一个应用程序,当运行FragmentPagerAdapter代码时,实例化我希望可用的所有片段,同时完成每个片段的“完整启动生命周期”.
我希望Fragment的AsyncTask在Fragment进入视图时被触发,当它离开视图时取消它.我试图覆盖每个片段上的所有可用回调,但我还没有找到一个回调或监听器,当显示/未显示特定片段时,它会做出反应.
我正在使用Android支持包v4和VIEwPager作为我的应用程序基础.
解决方法 您可能正在寻找.setonPageChangedListener() – 方法.调用mVIEwPager.setonPageChangedListener(new OnPageChangedListener(){…})或在适配器中实现VIEwPager.OnPageChangedListener(并设置mVIEwPager.setonPageChangedListener(mAdapter)).在onPageSelected() – 方法中,执行asynctask并取消任何先前的实例.这样,当您的页面(完全)可见时,您的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"); }});总结
以上是内存溢出为你收集整理的android – 如何控制Fragment和FragmentPagerAdapter的生命周期全部内容,希望文章能够帮你解决android – 如何控制Fragment和FragmentPagerAdapter的生命周期所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)