0

我有以下代码来获取屏幕截图

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

    Bitmap bitmap = screen.getDrawingCache();

代码onOptionsItemSelected在 UI 线程中。

当我手动测试它时它运行良好。但是,当我用猴子运行应用程序时,bitmapnull不确定它在猴子模式下是否总是为空,或者只是偶尔因为猴子的随机性。

有什么想法可以解释为什么猴子的行为会有所不同?我不想在以后的代码中盲目地添加一个空指针检查器。

谢谢

4

1 回答 1

0

您应该使用 buildDrawingCache(true),因为 buildDrawingCache() 与 buildDrawingCache(false) 相同。确保在使用 getDrawingCache() 之前将位图复制到另一个,如下所示。

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

因为如果您调用 setDrawingCacheEnabled(false),它会在 recycle() 之前复制我们的位图。

于 2013-11-28T10:36:58.667 回答