Drawable vs Single Reusable Bitmap лучше с памятью?

Насколько я понимаю (не то чтобы я прав) Рисунки обычно правильно удаляются из памяти, когда приложение завершает работу с ними. Однако растровые изображения необходимо переработать вручную, а иногда даже иметь специальный класс, написанный для их правильной обработки. Что касается памяти и утечек, то у меня вопрос: не выгоднее ли просто использовать Drawables , например:

myView.setBackgroundDrawable(getResources().getDrawable(R.drawable.my_image));
myView1.setBackgroundDrawable(getResources().getDrawable(R.drawable.my_image1));
myView2.setBackgroundDrawable(getResources().getDrawable(R.drawable.my_image2));

, а не что-то подобное с Bitmaps:

Bitmap tmpBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
myView.setImageBitmap(tmpBitmap);

tmpBitmap.recycle();
tmpBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image1);
myView1.setImageBitmap(tmpBitmap);

tmpBitmap.recycle();
tmpBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image2);
myView2.setImageBitmap(tmpBitmap);
tmpBitmap.recycle();

Я также читал, конечно что вы должны быть осторожны с методом recycle () для растровых изображений, потому что их можно удалить, пока они используются? Кажется, что эти проблемы продолжают появляться в разных формах, но я не могу получить прямой ответ от кого-либо по этому поводу. Один человек говорит, что нужно повторно использовать растровое изображение и перерабатывать его после каждого использования, а другие говорят, что нужно использовать Drawables и метод unbindDrawables () (это то, что я использовал):

private void unbindDrawables(View view) {
    if (view.getBackground() != null) {
        view.getBackground().setCallback(null);
    }
    if (view instanceof ViewGroup) {
        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
            unbindDrawables(((ViewGroup) view).getChildAt(i));
        }
        ((ViewGroup) view).removeAllViews();
    }
}

Любое применимое понимание было бы очень признательно. Спасибо

20
задан While-E 12 August 2011 в 18:37
поделиться