我知道有关内存已经被问到的问题,但我找不到解决方案
在Bitmap Factory中,我的内存不足,甚至使用
inSampleSize=1
所以我习惯用try catch out of memory of exception来包围它,因为这是一个不好的做法
try{
.........
......
}catch (OutOfMemoryError e)
{}
内存异常也被抓住了 但是我的问题是在被抓住这个例外之后我们
清除或重新分配GC的堆内存
有什么解决方案吗?
我用
没有用 请帮助!!!!!!!的System.gc();
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.
答案 0 :(得分:11)
经过3天的奋斗,我找到了一个不使用增加堆内存的解决方案 这个
我替换所有我的ImageView
<com.example.util.SingleShotImageView
android:id="@+id/grid_image"
android:layout_width="170dp"
android:layout_height="240dp"
android:adjustViewBounds="true"
android:layout_centerInParent="true"
/>
使用这个类我用来清除onDetachedFromWindow函数中的Image位图堆大小
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();
}
}
现在它工作正常,我的堆内存仍然是
为8192016字节分配将堆(frag case)增长到11.719MB