我的应用程序当前在初始化时冻结。我已经将范围缩小到与此代码片段中的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线程上运行的。我已经检查过四次了。
那么,是什么与这段代码交互导致冻结呢?
发布于 2014-04-09 05:00:25
问题是屏幕截图,以及后来的编码,太慢了,以至于冻结了应用程序。这种情况并不经常发生,但是增加延迟解决了这个问题。是时候在perf上工作了!
https://stackoverflow.com/questions/22929154
复制相似问题