Avoid bitmap from being recycled android

Antwan

i have two async task one of them download the image and the other one add blur effect on it but my problem is that in the onPostExecute callback of the download Task i want to put the bitmap in an ImageView and then pass it to second Task to apply blur effect on it but sometimes i get

trying to use a recycled bitmap  

i have searched alot on this problem but i didn't find a clear solution to avoid this problem specially that i use this image in a fragment of view pager this is my code

  protected void onPostExecute(Bitmap result) {
        Bitmap bitmap=result;
        bmImage.setImageBitmap(bitmap);
        if(bitmap!=null && !bitmap.isRecycled()){
            Bitmap bb=bitmap;

        new blurTask().execute(bb);}
    }

and this my complete fragment code

public class ScreenSlidePageFragment extends Fragment {
    int page;
    String img;
    // ImageView blured;
    String[] checkblur;
    int size;
    Boolean onCreateViewCalled = false;
    ImageView blur;
    ImageView imageView;

        public static ScreenSlidePageFragment newInstance(int page, String img, int size) {
            ScreenSlidePageFragment fragmentFirst = new ScreenSlidePageFragment();
            Bundle args = new Bundle();
            args.putInt("someInt", page);
            args.putString("img", img);
            args.putInt("size", size);
            fragmentFirst.setArguments(args);
            return fragmentFirst;
        }

        // Store instance variables based on arguments passed
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            page = getArguments().getInt("someInt", 0);
            img = getArguments().getString("img");
            size = getArguments().getInt("size");
            checkblur = new String[size];
            onCreateViewCalled = false;
        }

        public void ChangeAlpha(float alpha) {
            System.out.println(alpha);
            blur.setAlpha(alpha);

        }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View v = (View) inflater.inflate(
                    R.layout.fragment_screen_slide_page, container, false);

           imageView = (ImageView) v.findViewById(R.id.image);
            blur = (ImageView) v.findViewById(R.id.blur);
            //Glide.with(this).load(img).into(imageView);
            new DownloadImageTask(imageView).execute(img);
        return v;
        }
     class blurTask extends AsyncTask<Bitmap, Integer, BitmapDrawable> {
            Bitmap image;

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            @Override
            protected BitmapDrawable doInBackground(Bitmap... params) {
                image = params[0];


                Bitmap b = Blur.blurBitmap(image, getActivity());
                final BitmapDrawable ob = new BitmapDrawable(getResources(), b);


                return ob;
            }

            @Override
            protected void onPostExecute(BitmapDrawable blur1) {
                // Do whatever you need with the string, you can update your UI from here
                // blured.setBackground(blur);
                if (blur1 != null)
                    System.out.println("yryryryry");
                blur.setBackground(blur1);
            }


        }
        class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
            ImageView bmImage;

            public DownloadImageTask(ImageView bmImage) {
                this.bmImage = bmImage;
            }

            protected Bitmap doInBackground(String... urls) {
                String urldisplay = urls[0];
                Bitmap mIcon11 = null;
                try {
                    InputStream in = new java.net.URL(urldisplay).openStream();
                    mIcon11 = BitmapFactory.decodeStream(in);
                } catch (Exception e) {
                    Log.e("Error", e.getMessage());
                    e.printStackTrace();
                }
                return mIcon11;
            }

            protected void onPostExecute(Bitmap result) {
                bmImage.setImageBitmap(Bitmap.createBitmap(result));
                new blurTask().execute(Bitmap.createBitmap(bmImage));

            }
        }
    }

so i get the image then the blur effect appear but when i try to swipe to the next viewpager page i get this error
any help?
Thanks.

Arkar Aung

You can avoid trying to use a recycled bitmap by copying original bitmap to new bitmap before processing. Try this

protected void onPostExecute(Bitmap result) {
    bmImage.setImageBitmap(result);
    new blurTask().execute(Bitmap.createBitmap(result));
}

Hope it will be useful for you.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Android recycled bitmap error

From Dev

Canvas: trying to use a recycled bitmap android.graphics.Bitmap in Android

From Dev

Canvas: trying to use a recycled bitmap android.graphics.Bitmap in Android

From Dev

canvas: trying to use a recycled bitmap android.graphics.Bitmap on asynctask

From Dev

How to prevent objects from being automatically recycled in v8

From Dev

Can't Draw Recycled Bitmap

From Dev

Using recycled bitmap ... on live wallpaper

From Dev

In Android, How can I avoid the onStart method from being deprecated?

From Dev

In Android, How can I avoid the onStart method from being deprecated?

From Dev

Android : ImageView bitmap image being cut off

From Dev

Image.Source from Bitmap not being showed

From Dev

Android: Is there a way to make SharedPreferences secret/hidden from user? Avoid being manipulated or edited

From Dev

Android not freeing Bitmap from memory

From Dev

Android: Compress Bitmap from Uri

From Dev

Read the bitmap from Parse on Android

From Dev

Android ListView recycled - expandable item

From Dev

Avoid the li tag symbol from being copied

From Dev

Bitmap Image from Hex string - extra bytes being added

From Dev

How to fix "canvas: trying to use a recycled bitmap error"?

From Dev

Android - Resource Bitmap uses more memory than Bitmap from file

From Dev

How to create a square bitmap from a rectangular bitmap in Android

From Dev

How to change android code from compress bitmap to reszie or scaled bitmap?

From Dev

android: ImageView not displaying a bitmap from URL

From Dev

How to return bitmap from child activity in android

From Dev

Getting resource ID from bitmap/drawable in android

From Dev

Android clip piece of image from bitmap

From Dev

get pixel color from bitmap android

From Dev

Android: How to get bitmap from HashMap object?

From Dev

Create Bitmap from longBlob data in android

Related Related

  1. 1

    Android recycled bitmap error

  2. 2

    Canvas: trying to use a recycled bitmap android.graphics.Bitmap in Android

  3. 3

    Canvas: trying to use a recycled bitmap android.graphics.Bitmap in Android

  4. 4

    canvas: trying to use a recycled bitmap android.graphics.Bitmap on asynctask

  5. 5

    How to prevent objects from being automatically recycled in v8

  6. 6

    Can't Draw Recycled Bitmap

  7. 7

    Using recycled bitmap ... on live wallpaper

  8. 8

    In Android, How can I avoid the onStart method from being deprecated?

  9. 9

    In Android, How can I avoid the onStart method from being deprecated?

  10. 10

    Android : ImageView bitmap image being cut off

  11. 11

    Image.Source from Bitmap not being showed

  12. 12

    Android: Is there a way to make SharedPreferences secret/hidden from user? Avoid being manipulated or edited

  13. 13

    Android not freeing Bitmap from memory

  14. 14

    Android: Compress Bitmap from Uri

  15. 15

    Read the bitmap from Parse on Android

  16. 16

    Android ListView recycled - expandable item

  17. 17

    Avoid the li tag symbol from being copied

  18. 18

    Bitmap Image from Hex string - extra bytes being added

  19. 19

    How to fix "canvas: trying to use a recycled bitmap error"?

  20. 20

    Android - Resource Bitmap uses more memory than Bitmap from file

  21. 21

    How to create a square bitmap from a rectangular bitmap in Android

  22. 22

    How to change android code from compress bitmap to reszie or scaled bitmap?

  23. 23

    android: ImageView not displaying a bitmap from URL

  24. 24

    How to return bitmap from child activity in android

  25. 25

    Getting resource ID from bitmap/drawable in android

  26. 26

    Android clip piece of image from bitmap

  27. 27

    get pixel color from bitmap android

  28. 28

    Android: How to get bitmap from HashMap object?

  29. 29

    Create Bitmap from longBlob data in android

HotTag

Archive