在启动活动时在Canvas上绘制位图或某些位图时,绘制时间会出现峰值

时间:2016-03-11 04:36:34

标签: android canvas bitmap

这是用于在画布上绘制位图的代码,该代码以1080x1080 ImageView显示:

long startTime = System.currentTimeMillis();
animCanvas.drawBitmap(animateNext, currentRect, viewportRect, animCanvasPaint);
Log.i("draw_time", (System.currentTimeMillis() - startTime) + "");

所述代码在2500毫秒持续时间的ValueAnimator内。

当我在启动活动后立即执行此代码时,此代码就在(也就是第一次运行ValueAnimator),draw_time大多数时间为2-4毫秒,但有时它会超过33毫秒,导致有些滞后。

但是,第二次和之后运行ValueAnimator时,不会出现峰值。我知道这只是一个短暂的问题,但我第一次更专注于尖峰。

为什么尖峰会发生,它们如何被完全移除或减少其影响?

编辑:在动画图像之前,我使用AsyncTask从SD卡或内存缓存中获取图像,并使用android-gpuimage来过滤图像。从AsyncTask.THREAD_POOL_EXECUTOR将Executor更改为AsyncTask.SERIAL_EXECUTOR似乎解决了这个问题。

0 个答案:

没有答案