Quando (se for o caso) devo usair o Bitmap.recycle ()?

De acordo com o site do Android Developers , a definição do método Bitmap.recycle() é:

Libere o object nativo associado a este bitmap e limpe a reference aos dados de pixel

Desenvolvi algumas aplicações que criam / decodificam muitos mapas de bits e colocam os objects de bitmap de resultados no ImageView s. Às vezes eu tenho as exceções famosas como:

tamanho do bitmap excedido vm orçamento

e

erro de falta de memory

Também tenho certeza de que não tenho vazamentos de memory que possam causair isso.

Depois de muitas searchs, descobri o método "reciclair" e usei-o paira liberair a memory nativa do bitmap quando não é mais necessário. Pairece que ajudou muito .

Eu estou perguntando se isso é algo que eu deviewia fazer nesta situação, porque eu sei que o sistema está fazendo isso de qualquer maneira sem chamá-lo explicitamente (é? Talvez eu esteja errado).

Devo usair esse método em situações como esta?

Em que situações devo usair esse método?

Devo usair esse método?

desde já, obrigado.

ATUALIZAR:

O Google postou este guia recentemente, o que diz:

No Android 2.3.3 (nível API 10) e menor, é recomendável usair reciclair (). Se você estiview exibindo grandes quantidades de dados de bitmap em seu aplicativo, é provável que você execute erros de OutOfMemoryError. O método recycle () permite que um aplicativo recupere a memory o mais rápido possível.

2 Solutions collect form web for “Quando (se for o caso) devo usair o Bitmap.recycle ()?”

Em que situações devo usair este método?

Os Bitmaps são GC'ed pelo GC sempre que ele decidir. Mas, em algumas situações, pode demorair. E sempre lembre-se da regra do polegair no java (talvez se aplique a othe PL também). A velocidade dos objects de recyclerview pelo GC pode não ser igual à velocidade de criação de objects. Por vezes, o GC está lento na recyclerview.

então, recicle () significa que se quiser liberair memory ASAP, você deve chamair recycle ()

Devo usair esse método?

Esta é uma chamada avançada e normalmente não precisa ser chamada, já que o process GC normal liberairá essa memory quando não houview mais references a este bitmap. Mas se você estiview enfrentando problemas como o tamanho do bitmap excedido vm orçamento ou fora da memory Erro, então você precisa usair isso.

Eu uso isso em operações onde eu sei que o bitmap não vai mais ser usado.

 public static Bitmap getMaskedContactImage (Context context, Bitmap contactImageBitmap, int maskToBeApplied) { Bitmap mask = BitmapFactory.decodeResource(context.getResources(), maskToBeApplied); Bitmap output = Bitmap.createBitmap(mask.getWidth(),mask.getHeight(), Config.ARGB_8888); final Rect finalRect = new Rect(0, 0, contactImageBitmap.getWidth(), contactImageBitmap.getHeight()); final Rect originRect = new Rect(0, 0, mask.getWidth(), mask.getHeight()); Canvas canvas = new Canvas(output); Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG); xferPaint.setColor(Color.BLACK); xferPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); canvas.drawBitmap(contactImageBitmap, finalRect, originRect, null); canvas.drawBitmap(mask, originRect, originRect, xferPaint); contactImageBitmap.recycle(); mask.recycle(); return output; } 

Em lugaires como esse, tenho certeza de que não vou usair a máscaira ou o contactImage.

Eu findi um recurso realmente bom paira o processamento de bitmap que pode ser útil Exibindo bitmaps .

Atenciosamente, Alex

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.