如果不是延迟刷新其实两个都是一样的意思吗?

网上说在surfaceview中调用invalidate和postInvalidate不会调用ondraw()方法。但是我发现surfaceview里面还有一个draw()方法 这个是干什么的啊?还有一个问题在view里用invalidate和postInvalidate()刷新,但是view只能在主线程刷新啊。但是postInvalidate不是子线程刷新吗?我看一些资料说postInvalidate是Thread和Handler来刷新的,那如果用Handler来刷新是不是还是在主线程。

qq_遁去的一_1
浏览 112回答 2
2回答

狐的传说

Draw 作为英语单词,是拉, 曳, 牵, 画, 绘制, 拖曳的意思,作为图形处理工具,是为计划任务提供快照、图表和图形的处理工具。函数对应用程序窗口的客户区进行绘图的所有代码都必须写在这个函数中1、你说的 ondraw 与 draw 2个方法其实都是 view的方法, 对于普通的view,我们只需要实现onDraw回调。2、既然你用的是 SurfaceView , 那么你就应该知道,它画图不依赖于UI线程,不会阻塞UI线程。3、“那如果用Handler来刷新是不是还是在主线程” , 这句话是不对的。handler只是取当前线程队列,而非一定是主线程。

绝地无双

1、你说的 ondraw 与 draw 2个方法其实都是 view的方法, 对于普通的view,我们只需要实现onDraw回调。2、既然你用的是 SurfaceView , 那么你就应该知道,它画图不依赖于UI线程,不会阻塞UI线程。3、“那如果用Handler来刷新是不是还是在主线程” , 这句话是不对的。handler只是取当前线程队列,而非一定是主线程。如果你愿意,你可以取任何的线程队列给他。建议你去看看SurfaceView的基本概念,和它所具备的特性。另外你也可以去看看Thread 与 handler,发现你那边有点误区(猜测而已)。
打开App,查看更多内容
随时随地看视频慕课网APP