这是用于在画布上绘制位图的代码,该代码以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似乎解决了这个问题。