私のアプリにはこのコードスニペットがあります
mView.setDrawingCacheEnabled(true);
mBitmap = Bitmap.createBitmap(mView.getDrawingCache());
ここで、mViewはFrameLayoutのカスタムサブクラスのインスタンスです。このアプリは、数千人のユーザーが利用して6か月間うまく機能しています。最近、createBitmap()に渡されたnullポインターに関するレポートがほとんどありません(おそらく同じユーザーからですが、確認できません)。ユーザーが使用しているハードウェアまたはAndroidのバージョンがわかりません。
直前にキャッシュを有効にしても、getDrawingCache()がnullを返す原因は何ですか?新しい電話のハードウェアアクセラレーションに関連していますか?ビットマップのRAMが不十分なためですか?他に何か?防ぐことはできますか?
編集:私はここhttp://tinyurl.com/7yranvjでこの解決策を見つけました。それは合理的な回避策ですか?
mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(),
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBitMap);
mView.draw(canvas);