0

スクリーンショットを取得するための次のコードがあります

    View screen = getWindow().getDecorView();
    screen.setDrawingCacheEnabled(true);
    screen.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
    screen.buildDrawingCache();

    Bitmap bitmap = screen.getDrawingCache();

コードはonOptionsItemSelectedUI スレッドにあります。

手動でテストすると問題なく動作します。ただし、モンキーでアプリを実行すると、モンキーモードで常に null になるのか、モンキーのランダム性のためにたまにだけになるのかわかりませんbitmapnull

なぜ猿が違う行動をすることができるのか、何か考えはありますか? 後でコードにヌル ポインター チェッカーをやみくもに追加したくありません。

ありがとう

4

1 に答える 1

0

buildDrawingCache() は buildDrawingCache(false) と同じなので、buildDrawingCache(true) を使用する必要があります。以下のように getDrawingCache() を使用する前に、必ずビットマップを別のものにコピーしてください。

Bitmap bt=Bitmap.createBitmap(screen.getDrawingCache());

setDrawingCacheEnabled(false) を呼び出すと、recycle() の前にビットマップがコピーされるためです。

于 2013-11-28T10:36:58.667 に答える