一个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吧