Java 在原始优化中,如何提高性能?

Java 在原始优化中,如何提高性能?,java,android,canvas,bitmap,ondraw,Java,Android,Canvas,Bitmap,Ondraw,我试图在my.png图像上画图,但效果非常慢。如果我在没有.png文件的imageView上画图,效果很好。我怎样才能解决这个问题?据我所知,我需要防止“一直画很多画”,我如何才能意识到这一点 代码: 您的onDraw()方法应如下所示: @Override protected void onDraw(Canvas canvas) { paint.setColor(Color.RED); canvas.drawBitmap(size, 0, 0, paint); can

我试图在my.png图像上画图,但效果非常慢。如果我在没有.png文件的imageView上画图,效果很好。我怎样才能解决这个问题?据我所知,我需要防止“一直画很多画”,我如何才能意识到这一点

代码:

您的onDraw()方法应如下所示:

@Override
protected void onDraw(Canvas canvas) {

    paint.setColor(Color.RED);
    canvas.drawBitmap(size, 0, 0, paint);
    canvas.drawBitmap( mBitmap, 0, 0, mBitmapPaint);
    canvas.drawPath( mPath,  mPaint);
    canvas.drawPath( circlePath,  circlePaint);
}

所有位图解码和调整大小都应在外部完成(在构造函数中或仅当视图调整大小时),无需每次解码和调整大小,每次结果都相同。

尝试将解码和调整大小移动到onDraw()外部,如果可能,还应尝试从onDraw()中删除任何对象实例化。onDraw()中应该保留的唯一内容是与图形本身相关的内容。
@Override
protected void onDraw(Canvas canvas) {

    paint.setColor(Color.RED);
    canvas.drawBitmap(size, 0, 0, paint);
    canvas.drawBitmap( mBitmap, 0, 0, mBitmapPaint);
    canvas.drawPath( mPath,  mPaint);
    canvas.drawPath( circlePath,  circlePaint);
}