Вы можете использовать recycle()
, если уверены, что вы больше не будете использовать растровое изображение, например, при любой операции с временным растровым изображением. Но ... Вы можете использовать BitmapFactory.Options, например:
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inPurgeable=true;
Bitmap bitmapTemp = BitmapFactory.decodeResource(getResources(), R.drawable.intro, bitmapOptions);
Что это делает? опция inPurgeable будет предполагать, что, как только системе понадобится память и ваше растровое изображение больше не будет полезным, система сама перезапустит это распределение памяти. Если по какой-либо причине вы не можете загрузить изображение с помощью BitmapFactory, тогда вы можете использовать Recycle (), и рекомендуется вызывать сборщик мусора, а затем с помощью system.gc (), это полезно, если вы разрабатываете, например, игру, потому что когда сборщик мусора активируется, когда в вашей системе недостаточно памяти, он потребляет несколько значительных миллисекунд.
Вы должны быть очень осторожны с растровыми изображениями, они не хранятся в «обычной» памяти, используемой вашим приложением, они хранятся в «общей» памяти, используемой всеми вашими приложениями, если вы не используете Android 3.0.
Если вы обнаружили утечку памяти и не можете ее найти, глядя на кучу ... вам следует взглянуть на загрузку кода и использование растровых изображений.
Надеюсь, это поможет.