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

时间:2015-11-23 10:27:32

标签: android bitmap android-viewpager recycle

以下是ViewPager和& S中使用的PageF片段的来源。 PageAdapter。

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);
    }

}

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

1 个答案:

答案 0 :(得分:1)

你应该避免自己创建一个Bitmap。

看看这个JavaDoc

ImageView#setImageResource(int resId);

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