2015-09-19 1 views
0

У меня вопрос (надеюсь, что это не глупо). Является ли getDrawable (int resId) медленным? И это быстрее, чем ресурс декодирования с помощью BitmapFactory? И быстрее ли вызывать getDrawable (остаток) .getInstrinsicHeight(), чем декодирование с помощью Bitmap.Options с inJustDecodeBounds = true и чем получить ширину? Я знаю, что декодирование растровых изображений происходит медленно, и они потребляют много памяти, но как насчет getDrawable (int redId) и результата Drawable object? Он выделяет много памяти. Спасибо заранее.Android getDrawable performance

ответ

0

Ваш вопрос похож на этот:

Efficient way of creating Bitmap out of Drawable from res (BitmapFactory vs Type Casting)

«Вы посмотрите на исходный код для Bitmap завода может в http://source.android.com конкретно код для decodeResource

я рассуждал бы что. использование BitmapFactory предпочтительнее, но в любом случае, если вы декодируете несколько растровых изображений, вы должны сразу вызвать getResources() и сохранить результат для использования в качестве аргумента ресурсов для этих функций ».

Кроме того, я бы порекомендовал вам пройти 1 2 статьи здесь, чтобы узнать о обходного для использования любого из этих effficiently:

http://www.coderzheaven.com/tag/getdrawable/

+0

Спасибо за ваш ответ. Но я до сих пор не понимаю, почему предпочтительнее использовать decodeResource. У меня есть исходный код, но на самом деле я не знаю, какая операция выполняется быстро и так далее. Я вижу, что в getDrawable есть синхронизация, но это причина? И почему вы должны вызвать getResources один раз? Как я вижу, getResources вызывается только в том случае, если переменная mResource имеет значение null, а ресурсы будут созданы только при первом вызове. Пожалуйста, исправьте меня, если я ошибаюсь. Спасибо заранее. – DPM