2

のパフォーマンスが重要なonDraw()メソッドではView、インスタンスを変数に格納して後で再利用する方がよいでしょうか、それとも単にインスタンスを として参照する必要がありますthisか?

元:

public class ScheduleListView extends ListView {

    private Paint paint = new Paint();

    public ScheduleListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        paint.setColor(Color.GRAY);
        paint.setAlpha(100);
        paint.setColor(Color.parseColor("#47B3EA"));
        canvas.drawRect(this.getLeft(), 10, this.getRight(), 10, paint);
        super.onDraw(canvas);
        canvas.restore();
    }

}

はおよびでthis参照されています。次の変更を行うと、パフォーマンスが向上しますか?this.getRight()this.getLeft()

private ScheduleListView scheduleListView  = this;

... ...

@Override
protected void onDraw(Canvas canvas) {
    ....
    //refer to my instance using scheduleListView instead of this
    scheduleListView.getLeft() 
    ....
}

これは良い習慣ですか?これにより、パフォーマンスが向上しますか? そうでない場合、これを行うより良い方法は何ですか?

PS:jQuery(javascript)でオブジェクトを複数回使用する場合、オブジェクトを変数にキャッシュするので、これがJavaで役立つかどうか本当にわからないので、これを求めています....

元:

var myDiv = $(".myDiv");
myDiv.html();//do stuff
4

1 に答える 1

2

いいえ、それでは改善しません。

コードからできる最大の改善は、ペイント オブジェクトへの呼び出しをビューのコンストラクターに移動することです。

public ScheduleListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    paint.setColor(Color.GRAY);
    paint.setAlpha(100);
    paint.setColor(Color.parseColor("#47B3EA"));

}

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawRect(this.getLeft(), 10, this.getRight(), 10, paint);
    super.onDraw(canvas);
    canvas.restore();
}
于 2012-09-23T11:49:19.600 に答える