2013-05-25 3 views
0

Я создал растровое изображение и использовал его в Canvas, чтобы нарисовать круг, и этот метод вызывается каждый раз, когда действие вызывается, а Activity вызывается многократно, поэтому я получаю некоторую ошибку, например 1536000-byte external allocation too large for this process Я знаю, что ошибка - это память вопрос, но как удалить растровое изображение, а также использовать во второй раз вызов активность ..Как очистить память Bitmap в Android?

Мой код:

private void Draw_Hold_Circle() { 
     Bitmap bitmap_hold = Bitmap.createBitmap(width, height, 
       Bitmap.Config.ARGB_8888); 
     Canvas canvas_hold = new Canvas(bitmap_hold); 
     canvas_hold.drawArc(rect_open, 0, 360, false, mOutlinePaint); 

    } 

Этот метод вызывается в 4 раза и MainActivity можно назвать мульти-времени, так как сохранить Bitmap и его память?

+0

Вы можете вызвать bitmap.recycle(). Но его левый к gc освобождает память. – Raghunandan

+0

Allready call recycle() в Ondestroy, но получая некоторую ошибку, например, Canvas использовал растровое изображение долгого времени. – ckpatel

+0

http://stackoverflow.com/questions/477572/strange-out-of-memory-issue-while-loading-an-image -to-a-bitmap-object. – Zombie

ответ

0

Есть ли какая-либо особая причина, по которой вы хотите сохранить изображение в памяти? Если я не ошибаюсь, вы вызываете свой метод «каждый раз, когда ваша деятельность называется», поэтому я предполагаю, что вы имеете в виду каждый раз, когда она начинается с startActivity(). Если это так, то нет необходимости в обслуживании всех изображений в памяти сразу, так как пользователь сможет увидеть тот, который находится на вашем переднем плане. Я предлагаю вам сохранить ваше изображение в файле на вашем методе onStop() и перестроить его, если необходимо, в методе onResume().

Смежные вопросы