android – Canvas不会更新(invalidate)直到整个while循环结束

我正试图在画布上移动一个球. a和b类似于x,y坐标位置.从我的代码中试图动态获取不同值的任何方式. a,b是全局变量.但似乎“invalidate()”或屏幕刷新仅在整个循环结束时发生.你知道为什么吗?.如果我必须在另一个线程上构建它,请建议我一些简单的代码.

private void shootBall(){
    while (a>b){
        a = getPositionX();
        b = getPositionY();
        invalidate();
        }
    }
}

解决方法:

这样做,并使用postInvalidate()代替:

private void shootBall(){

    new Thread(new Runnable() {
        public void run() {

            while (a>b){
                a = getPositionX();
                b = getPositionY();
                postInvalidate();
            }

        }
    }).start();
}

编辑:但如前所述,不要假设无效重绘屏幕,它标记为要重绘,UI线程将绕过它.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...