Mi aplicación tiene este fragmento de códigoCómo evitar el puntero nulo en View.getDrawingCache()?
mView.setDrawingCacheEnabled(true);
mBitmap = Bitmap.createBitmap(mView.getDrawingCache());
Dónde mView es una instancia de una subclase personalizada de FrameLayout. La aplicación ha funcionado bien durante 6 meses con miles de usuarios. Recientemente recibí pocos informes (posiblemente del mismo usuario, pero no puedo confirmar) sobre un puntero nulo pasado a createBitmap(). No sé qué hardware o versión de Android usa el usuario.
¿Qué puede hacer que getDrawingCache() devuelva nulo a pesar de que habilité la memoria caché justo antes? ¿Está relacionado con la aceleración de hardware en teléfonos nuevos? ¿Es debido a la ram insuficiente para el mapa de bits? ¿Algo más? ¿Se puede prevenir?
Editar: Encontré esta solución aquí http://tinyurl.com/7yranvj. ¿Es una solución razonable?
mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(),
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBitMap);
mView.draw(canvas);