0

レンダリングの動作を確認するために、次の簡単なコードを書きました。このコードでは、画面の色を変更しています。

私が理解できないのは、なぜこのコードが永久に実行されているのですか? 無制限のループは使用しませんでしたが、このコードは永久に実行されます!

私にその理由を教えてください。ありがとう

package kamalan.com.androidbasicstarter;

import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class RenderViewTest extends Activity{

    class RenderView extends View{
        Random rand = new Random();

        public RenderView(Context context) {
            super(context);
        }

        protected void onDraw(Canvas canvas){
            canvas.drawRGB(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256));
            invalidate();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(new RenderView(this));
    }
}
4

1 に答える 1

0

invalidate再描画を引き起こします。すぐに再度呼び出されるonDrawため、通常(常に?)から呼び出すのはお勧めできません。onDrawこれがあなたが見ているものです。

于 2011-09-03T07:52:18.280 に答える