getDrawingCache导致应用程序冻结

时间:2014-04-08 06:24:24

标签: android

我的应用目前正在冻结初始化。我已将其缩小到与此片段中的getDrawingCache()调用相关的内容..当我将其取出时,问题就会消失。

public Shot getScreenshot(View view) throws DrawingCacheException {
    view.setDrawingCacheEnabled(true);
    Bitmap bitmap;
    try {
        Bitmap drawingCache = view.getDrawingCache();
        if (drawingCache == null) {
            throw new DrawingCacheException("Cannot get bitmap drawing cache");
        }

        bitmap = Bitmap.createBitmap(drawingCache);
    } finally {
        view.setDrawingCacheEnabled(false);
    }
    //do postprocessing
}

问题肯定与上下文有关。这是以前工作的,我根本没有碰过这个代码,但我确实重构了调用它的类。

在任何人提到它之前,是的,这是在活动的UI线程上运行的。我进行了四重检查。

那么,什么可能与此代码交互导致冻结?

1 个答案:

答案 0 :(得分:0)

问题在于截图以及之后的编码速度太慢以至于冻结了应用程序。这种情况并非经常发生,但增加延迟可以解决问题。是时候工作了!