如何使用 Fragment 回收 pageAdapter 中的位图?在 android

How to recycle a bitmap in pageAdapter with Fragment? in android

这是 ViewPager 和 PageAdapter 中使用的 PageF 片段的来源。

public class PageF extends Fragment {
    public static final String ARG_PARAM1 = "bitmap";

    public static PageF newInstance(int id) {
        PageF fragment = new PageF();
        Bundle args = new Bundle();
        args.putInt(ARG_PARAM1, id);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup  container,
         Bundle savedInstanceState) {
        return inflater.inflate(R.layout.preview_image, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable final Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        ImageView imageView = (ImageView) view;
        Bitmap bitmap = BitmapFactory.decodeResource(
                getResources()
                , getArguments().getInt(ARG_PARAM1)
        );
        imageView.setImageBitmap(bitmap);
    }

}

如何回收该位图?有时,在某些设备中,它会发生内存不足。 :(

您应该避免自己创建位图。

看看这个 JavaDoc :

ImageView#setImageResource(int resId);

它不会阻止所有内存不足 (OOM) 错误