Как избежать нулевого указателя в View.getDrawingCache()?

В моем приложении есть этот фрагмент кода

mView.setDrawingCacheEnabled(true);
mBitmap = Bitmap.createBitmap(mView.getDrawingCache());

Где mView — это экземпляр пользовательского подкласса FrameLayout. Приложение хорошо работает уже 6 месяцев с тысячами пользователей. Недавно я получил несколько отчетов (возможно, от того же пользователя, но я не могу подтвердить) о нулевом указателе, переданном в createBitmap(). Я не знаю, какое оборудование или версию Android использует пользователь.

Что может привести к тому, что функция getDrawingCache() вернет значение null, хотя непосредственно перед этим я включил кеширование? Связано ли это с аппаратным ускорением в новых телефонах? Это из-за нехватки оперативной памяти для растрового изображения? Что-нибудь еще? Можно ли это предотвратить?

Изменить: я нашел это решение здесь http://tinyurl.com/7yranvj. Это разумный обходной путь?

mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(),
        Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBitMap);
mView.draw(canvas);

6
задан user1139880 24 May 2012 в 04:57
поделиться