This question already has an answer here:
- Bitmap recycle with largeHeap enabled 5 answers
I just startet writing an app for Android. I have 3 activitys that use the same xml layout, an grid view. They also use all the same adapter to show an imageview and an textview in each grid item. When you select an object in the first activity, you get to the second and then to the third.
First I used the normal method "imageView.setImageResource(drawableid)". It wasn't really a problem, but when I put more images into the gridview, I got the outofmemory error.
So I search for a solution. I tried the thing from the android dev site with decode bitmap, resize and Async task and so on. The other thing was the picasso library, wich would be very simple with "Picasso.with(mContext).load(imageURI).into(imageView);". But picasso ist to slow for the gridview. It looks messed up while scrolling. And sometimes some images weren't load.
All metodes fill the memory and the app crashes when I open the activities a couple times. What am I doing wrong? Can I free up the memory by myself, when I leave the first activity to the second?
There was an answer in SO about freeing up memory manually. I couldn't find it now so I am pasting the answer I am implementing
Define the following function
then in your onDestroy method use
This has stopped my app from crashing on orientation change.
Best solution is use the RecyclerView in your app https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html
You load image thumbnail in grid view not the main image after clicking on gridview you make a request to load the main image. Store thumbnails on server also.