Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在自定义视图中使用invalidate的奇怪行为_Java_Android_Android Custom View_Invalidation - Fatal编程技术网

Java 在自定义视图中使用invalidate的奇怪行为

Java 在自定义视图中使用invalidate的奇怪行为,java,android,android-custom-view,invalidation,Java,Android,Android Custom View,Invalidation,我有一个customview,当触摸customview并在customview中显示该值时,我会在其中增加一个值 这在95%的情况下运行良好,但有时自定义视图会显示旧值,我无法解释这是如何发生的 例如: 日志说: 123456 Customview显示: 123454 我的代码: public class MyView extends View { private int testvalue = 0; private final Handler updateHand

我有一个customview,当触摸customview并在customview中显示该值时,我会在其中增加一个值

这在95%的情况下运行良好,但有时自定义视图会显示旧值,我无法解释这是如何发生的

例如: 日志说:

123456

Customview显示:

123454

我的代码:

public class MyView extends View {
    
    private int testvalue = 0;

    private final Handler updateHandler = new Handler() {
        public void handleMessage(final Message msg) {
            testvalue = testvalue + 1;
            invalidate();
        }
    };

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paintstatus.setTextSize(120);
        canvas.drawText("" + testvalue,400,600,paintstatus);
        Log.v("DEBUG_DRAW","" + testvalue);
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
            updateHandler.sendEmptyMessage(0);
            return true;
    }
}
日志说:

2020-08-28 08:56:46.638 20171-20171/myapp V/DEBUG_DRAW: 40
2020-08-28 08:56:46.705 20171-20171/myapp  V/DEBUG_DRAW: 41
2020-08-28 08:56:47.505 20171-20171/myapp  V/DEBUG_DRAW: 42
2020-08-28 08:56:47.587 20171-20171/myapp  V/DEBUG_DRAW: 43
2020-08-28 08:56:47.587时,我在屏幕上看到以下内容:

有人对此有解释吗?我做错了什么