¿Cómo puedo controlar el ciclo de vida de un fragmento y un FragmentPagerAdapter?

Estoy tratando de averiguar si hay una manera de controlar cuando el ciclo de vida de un fragmento se procesa cuando se combina con un FragmentPagerAdapter.

Mi objetivo es activar un AsyncTask del Fragmento visible actualmente, cuando el usuario lo pase a la vista.

A partir de ahora, sólo he podido crear una aplicación que, cuando se ejecuta el código FragmentPagerAdapter, instancia todos los Fragmentos que me gustaría tener disponibles completando el "ciclo de inicio completo" de cada Fragmento a la vez.

Me gustaría que el AsyncTask del Fragmento se activara cuando apareciera el Fragmento, cancelándolo cuando se fuera de la vista. He intentado anular todas las devoluciones de llamada disponibles en cada fragmento, pero todavía tengo que encontrar una devolución de llamada u oyente que reacciona cuando un fragmento específico se muestra / no se muestra.

Estoy utilizando el paquete de soporte de Android v4 con un ViewPager como mi base para la aplicación.

Probablemente esté buscando el método .setOnPageChangedListener() . Llame a mViewPager.setOnPageChangedListener(new OnPageChangedListener() { ... }) o implement ViewPager.OnPageChangedListener en su adaptador (y establezca mViewPager.setOnPageChangedListener(mAdapter) ).

En el método onPageSelected() , ejecute su asynctask y cancele cualquier instancia anterior. De esta manera, su asynctask se ejecutará cuando su página esté (completamente) visible. Si desea ejecutarlo tan pronto como el usuario comience a desplazarse, manipule los onPageScrollStatechanged() y onPageScrolled() .

Ejemplo:

 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"); } }); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.