当前位置: 代码迷 >> Android >> 一个invalidate的有关问题
  详细解决方案

一个invalidate的有关问题

热度:69   发布时间:2016-05-01 22:09:19.0
一个invalidate的问题
nvalidate()得在UI线程中被调动,在工作者线程中可以通过Handler来通知UI线程进行界面更新。
postInvalidate()在工作者线程中被调用。

我在看有的五子棋源码的时候,里面有以下一段

Java code
public boolean onTouchEvent(MotionEvent event) {        if (event.getAction() == MotionEvent.ACTION_DOWN) {            switch (mGameState) {            case GAMESTATE_PRE:                。。。            case GAMESTATE_RUN: {                。。。                break;            case GAMESTATE_PAUSE:                                。。。                break;            case GAMESTATE_END:                                。。。                break;            }            this.invalidate();        }        return true;    }


这样写是不是不合法,虽然能运行。应该搞一个Handler,在Handler里面invalidate的吧

------解决方案--------------------
其实你的UI更新完全可以是在点击游戏屏幕时进行更新,所以不需要做什么都要UI更新,你要invalidate()无非也就是重绘棋盘和棋子.
------解决方案--------------------
怎么看还是在ui线程呢
------解决方案--------------------
我觉得合法,因为按键事件和触屏事件都是在UI线程中触发的。
------解决方案--------------------
同意楼上
------解决方案--------------------
有啥不合法的,能运行就是合法。。。
------解决方案--------------------
这是个自定义view吧