为什么android:src在xml中设置的图像仍然存储在堆中?

为什么android:src在xml中设置的图像仍然存储在堆中?,android,memory,heap,fragment,memory-leaks,Android,Memory,Heap,Fragment,Memory Leaks,我正在开发一个应用程序,其中包含各种带有大图像的片段活动。我不想在内存中跨活动保存此图像,因此我使用setImageBitmap(null)解除了图像绑定。然后在onResume()中重新还原图像。 但如果应用程序具有完全引用,为什么还要对xml中设置的图像执行同样的操作呢? 当离开活动时,强制片段中的所有图像不保留在堆中,当从其他活动返回时,强制重新创建视图的最佳方法是什么? 为什么我设置了“setoffscreenPageLimit(1)”并且三个片段的图像总是在堆中?3分钟? 我用的是fr

我正在开发一个应用程序,其中包含各种带有大图像的片段活动。我不想在内存中跨活动保存此图像,因此我使用setImageBitmap(null)解除了图像绑定。然后在onResume()中重新还原图像。 但如果应用程序具有完全引用,为什么还要对xml中设置的图像执行同样的操作呢? 当离开活动时,强制片段中的所有图像不保留在堆中,当从其他活动返回时,强制重新创建视图的最佳方法是什么? 为什么我设置了“setoffscreenPageLimit(1)”并且三个片段的图像总是在堆中?3分钟? 我用的是fragmentStatePagerAdapter

谢谢

使用“setoffscreenPageLimit(1)”时,您告诉ViewPager也要在内存中加载下一个片段。我的意思是,加载当前片段左侧和右侧的片段

并且不要试图设置“setoffscreenPageLimit(0)”,否则将不起作用

-编辑-

此外,您可以像这样以编程方式设置图像,而不是通过xml进行设置

ImageView imageView = (ImageView)findViewById(R.id.imageview);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
imageView.setImageBitmap(bitmap);
使用“setoffscreenPageLimit(1)”可以告诉ViewPager将下一个片段也加载到内存中。我的意思是,加载当前片段左侧和右侧的片段

并且不要试图设置“setoffscreenPageLimit(0)”,否则将不起作用

-编辑-

此外,您可以像这样以编程方式设置图像,而不是通过xml进行设置

ImageView imageView = (ImageView)findViewById(R.id.imageview);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
imageView.setImageBitmap(bitmap);

最好的方法是在位图不再使用时回收它们

if(bitmap!=null)
   {
      bitmap.recycle();
      bitmap=null;

   }

如果你想让你的一天过得更好,请观看本官方视频的前20分钟-

最好的方法是在位图不再使用时回收它们

if(bitmap!=null)
   {
      bitmap.recycle();
      bitmap=null;

   }

如果您想让您的一天过得愉快,请观看本官方视频的前20分钟-

谢谢您的回复。我认为这是为了顺利运行transtition。@user2660673如果对您的问题有用,请接受/投票答案=d感谢回复。我认为这是为了顺利运行transtition。@user2660673如果对您的问题有用,请接受/投票答案=D