我使用ViewPager類和FragmentStatePagerAdapter適配器創建應用程序。我已經讀過,所提到的適配器和FragmentPagerAdapter之間的區別在於後者將所有頁面一次存儲在內存中,而FragmentStatePagerAdapter在任何給定時間只有3個加載在內存中。FragmentStatePagerAdapter內存問題
所以,這是問題所在。我有一個約50頁的ViewPager。每個頁面上都有一個ImageView圖像(以及其他一些元素)。滾動瀏覽大約20個獨特頁面後,我通常會發現內存不足錯誤。所以,我的問題是:我該如何配置FragmentStatePagerAdapter在任何給定的時間只有大約3頁加載到內存中?這是我的適配器的代碼:
mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {
@Override
public Fragment getItem(int position) {
Song song = mSongs.get(position);
return PlayFragment.newInstance(position);
}
@Override
public int getCount() {
return mSongs.size();
}
@Override
public void destroyItem(View collection, int position, Object o) {
View view = (View)o;
((ViewPager) collection).removeView(view);
view = null;
}
@Override
public Object instantiateItem(View context, int position) {
ImageView imageView = new ImageView(getApplicationContext());
imageView.findViewById(R.id.albumimage);
imageView.setImageBitmap(BitmapFactory.decodeResource(getResources(), position));
((ViewPager) context).addView(imageView);
return imageView;
}
});
destroyItem和instantiateItem方法當前不執行任何操作。我從其他人的問題中讀到這些後添加了它們。如果我在我的代碼中使用這兩種方法,至今沒有區別。
我已經閱讀過類似於我的其他問題,但是我終於決定在嘗試自行解決問題之後提出一個問題,但沒有好的結果。
我試着在onDestroy()中設置ImageView爲null,但沒有發生任何事情。