Clearing heap memory for Out of Memory Exception

2019-03-10 06:19发布

I Know the question regarding out of memory already been asked ,but i found no solution

In Bitmap Factory i got out of memory Exception, even use

inSampleSize=1

so i use to surrounded it by try catch out of memory exception since it is a bad practice

try{
   .........
   ......
}catch (OutOfMemoryError e)
            {}

out of memory exception also caught but my question is after caught of this exception shall we

Clearing or reallocating heap memory of GC

is there any solution ?

i use

System.gc();

no use please help!!!!!!!

not even Bitmap also for GridView Orientation 
i found this exception
Clamp target GC heap from 17.333MB to 16.000MB
Out of memory on a 140416-byte allocation.

1条回答
劫难
2楼-- · 2019-03-10 06:48

After 3 days of struggle i found a solution for not increasing Heap memory by using this

i replace all my ImageView like this

<com.example.util.SingleShotImageView
                    android:id="@+id/grid_image"
                    android:layout_width="170dp"
                    android:layout_height="240dp"
                    android:adjustViewBounds="true"
                    android:layout_centerInParent="true"
                     />

Using this class i use to clear the Image bitmap heap size in onDetachedFromWindow function

public class SingleShotImageView extends ImageView {

    public SingleShotImageView(Context context) {
        super(context);
    }

    public SingleShotImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SingleShotImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onDetachedFromWindow () {
        setImageDrawable(null);
        setBackgroundDrawable(null);
        setImageBitmap(null);
        System.gc();
    }

}

now it works fine and my heap memory remains

Grow heap (frag case) to 11.719MB for 8192016-byte allocation

查看更多
登录 后发表回答