2013-08-31 125 views
0

我有一個android應用程序,我跟着http://developer.android.com/training/animation/screen-slide.html進行設置。破壞片段

但是,我在ViewPager中有很多片段(不是一次),我想在他們不在的時候銷燬它們。爲了說明問題,我每次調用ViewPager的getItem(int position)時都會創建一個片段 - 大約365次(每年每天一次)。一切都很好,直到我將一個ImageView添加到其中一個頁面(在它的末尾總共有12個...),並且現在如果我嘗試查看其中3個頁面片段,則內存不足。

我的問題是,當它不是當前頁面時,我如何刪除/銷燬碎片?我嘗試過彈出FragmentManager的BackStack,但那不起作用(BackStack中似乎沒有任何東西,但是又一次 - 我可能會在getItem()函數的錯誤位置調用它)

我會提供代碼,但其中很重要的部分需要仔細閱讀。它具有與上面鏈接中的教程完全相同的結構。

感謝

+0

head to http://stackoverflow.com/questions/7119203/how-to-destroy-fragment –

回答

0

如果在添加imageViews到傳呼機後得到的內存問題,爲什麼不專注於你構建的ImageView的位圖的內存方面剛剛添加到您的應用程序?

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

注意,從設備相機拍攝的圖像可以是非常,非常大,可以非常迅速地導致內存問題,並IMO你應該首先着眼於這一點。

IMO,標準的ViewPager和標準適配器都可以管理內存,即使你有很多碎片可以通過尋呼機循環。

而且,它的一個little complex承擔明確銷燬頁面的問題,由於尋呼機和適配器之間協作的細節數量,在ViewPager中重新加載片段。

如果你想利用在適配器和尋呼機自己的複雜性,你需要進入source code尋呼機和適配器選擇:

* {@link android.support.v4.app.FragmentStatePagerAdapter}, 
* {@link android.support.v13.app.FragmentStatePagerAdapter}; 

你可以從很多見在ViewPager中管理片段的主題上,它不足以在適配器上調用「destroyItem()」,或者在調用適配器上的notifyDataSetChanged()之前僅從綁定到適配器的ListArray中移除一個片段。您還必須確切知道getItemPosition如何與ViewPager一起使用,以獲得您想要的結果。

這可能需要很多時間才能完成ViewPager方法。

解決它,如果你可以第一次專注於位圖。