为什么更新界面的操作都应该放到主线程中进行
为什么更新界面的操作都应该放到主线程中进行(也就是放到main_queue中进行),是不是界面上是不一定会立即看到效果?是不是放到其他线程当中不一定会立即执行?如果是的话...
为什么更新界面的操作都应该放到主线程中进行(也就是放到main_queue中进行),是不是界面上是不一定会立即看到效果?是不是放到其他线程当中不一定会立即执行? 如果是的话,为什么不会立即执行?
展开
3个回答
2013-05-18
展开全部
原因推测为:1.操作系统实践线程优先权为最高2.为了用户体验理论上马上能看到效果,但这又会根据os实践有所不同,而自绘制ui则是要看绘制方式另外在windows下有时要主动呼叫让窗口无效的api触发重新绘制事件ios/windows/android都无法在其他线程更新ui,一般背景更新也都还是要invoke给ui线程一般来说在背景线程更新ui大部分会直接崩溃,但早期.NET+visual studio下IDE会预设将某个UI的背景更新属性设为true,则可以直接在背景更动ui,但实际上这也只是.NET高阶封装把一些事情做掉,实际上还是在ui线程更新,但用起来像在背景更新,勉强算是特例
2013-05-18
展开全部
1、为什么更新界面的操作都应该放到主线程中进行(也就是放到main_queue中进行),是不是界面上是不一定会立即看到效果?
这个当然,否则会怎么样呢——你一边想点按钮,但是按钮一下不见了,界面和捉迷藏呢!
2、是不是放到其他线程当中不一定会立即执行?
会立即执行,只是其它线程不会阻塞你的操作,所以会出现1中的情况,你一边操作,界面一边变化,那怎么玩?
所以结论就是:
更新界面的操作应该放在主线程,这也就是用户操作体验的线程;
大量运算等耗时操作应该放在其它线程,这样就不会阻塞你的操作,即不会卡,完了按照合适的方式处理下即可,如提示个结果。
这个当然,否则会怎么样呢——你一边想点按钮,但是按钮一下不见了,界面和捉迷藏呢!
2、是不是放到其他线程当中不一定会立即执行?
会立即执行,只是其它线程不会阻塞你的操作,所以会出现1中的情况,你一边操作,界面一边变化,那怎么玩?
所以结论就是:
更新界面的操作应该放在主线程,这也就是用户操作体验的线程;
大量运算等耗时操作应该放在其它线程,这样就不会阻塞你的操作,即不会卡,完了按照合适的方式处理下即可,如提示个结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么语言?一般来说没有你问的这个说法。更新界面的操作放在主线程中一般是为了方便编写,也可以放在子线程中。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询