我有一个Android应用程序,我跟着http://developer.android.com/training/animation/screen-slide.html进行设置。
但是,我在ViewPager中有很多片段(不是一次),当我不在它们身上时,我想要销毁它们。换句话说,我每次调用ViewPager的getItem(int position)时都会创建一个片段 - 大约365次(一年中每天一个)。一切都很好,直到我将一个ImageView添加到其中一个页面(在它的末尾总共12个...),如果我尝试查看这些页面片段中的3个,现在我的内存已用完了。
我的问题是,当它不是当前页面时,如何删除/销毁片段?我尝试弹出FragmentManager的BackStack,但是没有用(它似乎在BackStack中没有任何东西,但是再次 - 我本来可以在错误的地方调用它,这是getItem()函数)
我会提供代码,但要了解重要部分需要花很多时间。它具有与上面链接中的教程完全相同的结构。
由于
答案 0 :(得分:0)
如果在将pageView添加到寻呼机后出现内存问题,为什么不关注为刚刚添加到应用中的imageView构建的位图的内存方面?
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
请注意,来自设备相机的图片可能会非常非常大,并且可能会非常快速地导致内存问题,IMO您应该首先关注它。
IMO,标准的ViewPager和标准适配器可以管理内存,即使您有很多片段可以在寻呼机中循环。
并且,由于寻呼机和适配器之间协作的细节量,它可以解决明确销毁页面,重新加载ViewPager中的片段的问题{/ 3}。
如果您想自己承担适配器和寻呼机的复杂性,您需要进入寻呼机的little complex和您选择的适配器:
* {@link android.support.v4.app.FragmentStatePagerAdapter},
* {@link android.support.v13.app.FragmentStatePagerAdapter};
正如您在ViewPager中管理片段主题的许多帖子中所看到的,它不足以简单地在适配器上调用'destroyItem()'或者只是在调用notifyDataSetChanged之前从ListArray中绑定到适配器的片段中删除片段()在适配器上。您还必须确切知道source code的操作如何与ViewPager一起工作才能获得所需的结果。
可能需要花费大量时间来完成ViewPager方法。
如果可以,首先关注位图,解决它。