Voglio realizzare questo:
Io uso un ViewPager con un FragmentStatePagerAdapter.
Ho iniziato con l'esempio da questa pagina:
http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.htmlCome distruggere i vecchi frammenti in FragmentStatePagerAdapter
Questo è il mio adattatore ViewPager:
public static class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return ArrayListFragment.newInstance(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
}
Ogni pagina del mio ViewPager contiene un ListView con alcuni dati. Nel momento in cui passo a una nuova pagina in ViewPager aumenterà la memoria RAM molto rapidamente.
Come rimuovere i vecchi frammenti?
Ho anche usato questo, ma non fa nulla:
public void destroyItem(ViewGroup container, int position, Object object) {
FragmentManager manager = ((Fragment) object).getFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment) object);
trans.commit();
super.destroyItem(container, position, object);
}
C'è anche un ritardo di 1-2 secondi dopo che ho passare rapidamente a una nuova pagina o una pagina vecchia. C'è qualche tecnica per rimuovere quel ritardo. Se passo a una nuova pagina e aspetto 2 secondi, al prossimo passaggio non ci sono più ritardi.
Testato su Nexus 7.
Hai trovato soluzioni? –
si prega di fornire la soluzione @vovahost – jyomin