mia app ha questo frammento di codiceCome evitare il puntatore nullo in View.getDrawingCache()?
mView.setDrawingCacheEnabled(true);
mBitmap = Bitmap.createBitmap(mView.getDrawingCache());
Dove MView è un'istanza di una sottoclasse personalizzata di FrameLayout. L'app ha funzionato bene per 6 mesi con migliaia di utenti. Recentemente ho ricevuto pochi report (probabilmente dallo stesso utente ma non posso confermare) su un puntatore nullo passato a createBitmap(). Non so quale hardware o versione di Android l'utente utilizza.
Cosa può causare a getDrawingCache() di restituire null anche se ho abilitato la cache subito prima? È legato all'accelerazione hardware nei nuovi telefoni? È a causa della RAM insufficiente per la bitmap? Qualunque altra cosa? Può essere prevenuto?
Modifica: ho trovato questa soluzione qui http://tinyurl.com/7yranvj. È una soluzione ragionevole?
mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(),
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBitMap);
mView.draw(canvas);