我真的不知道,如果一个ViewPager与通用图像装载机可以/应该被用作一样的界面,一个画廊的替代,因为我遇到了内存不足的错误,同时加载来自SD卡的图像并以全屏模式查看它们。无论是什么号码,它的工作原理所有罚款与一个GridView,但同时在查看寻呼机查看图像,每个位一直吃了很多的记忆,并在10倍左右的图像,它提供了内存不足的错误。查看传呼机与通用图像装载机内存不足错误
我看到几乎所有已张贴在这里与通用图像装载机和他们每个人的工作,而相关的内存不足错误的问题,出现了一些配置错误的原因。
我不知道如果我使用了错误的配置或什么,但我已经浪费了很多时间在上面,并也有点卡住,任何帮助/建议将不胜感激。
为ImageLoader的的配置:
显示图像的选项为:
options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.image_for_empty_url)
.resetViewBeforeLoading()
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(Bitmap.Config.RGB_565)
.displayer(new FadeInBitmapDisplayer(300))
.build();
我使用的是与库给出的示例项目,但这些设置不会工作,要么,它经过一段时间后才会崩溃。我的猜测是,有一个特定的回调,我必须从视图中回收位图不可见的位图。
编辑:我知道它的内存泄漏,当他们应该是不可见的被破坏的意见,但不会释放内存,因为它应该。继承人执行destroyItem回调,遵循不同问题给出的提示,但仍无法找到内存泄漏。
@Override
public void destroyItem(View container, int position, Object object) {
// ((ViewPager) container).removeView((View) object);
Log.d("DESTROY", "destroying view at position " + position);
View view = (View)object;
((ViewPager) container).removeView(view);
view = null;
}
正如我上面提到的,我做了它的工作使用GitHub的问题链路上提到的实施。这导致了另一个bug,每当我删除一张图片时,抛出异常(非法状态异常,ImageView不再存在,不应该再使用这个PhotoViewAttacher)。 奇怪的是,我在getItemPosition中返回了POSITION_NONE,而不是最好的实现,但对我的情况来说足够好了,有什么想法为什么在这里发生? – 2013-02-26 08:28:05
为您的新例外,请参阅附加的修补程序:https://github.com/chrisbanes/PhotoView/pull/34 – shem 2013-03-03 08:49:59
不,没有用,仍然崩溃。页面更改时也一样。 – 2013-03-05 08:27:54