Chr*_*son 20
当最前面的应用程序或在鼠标指针下有窗口的应用程序在某个时间窗口内没有响应来自窗口服务器的事件时,窗口服务器将显示旋转等待光标.
为了避免旋转等待光标,应用程序需要及时为事件提供服务.没有办法绕过这个窗口服务器的行为,并且有充分的理由:Mac OS X上的应用程序永远不应该对用户没有响应.
原因是您的应用阻止了用户界面.正如其他海报所说,窗口管理器可以注意到你有一段时间没有处理事件并提出了这个UI.
您很可能在UI(默认)线程上同步执行某些IO(例如读取或写入磁盘或执行网络请求).保持应用程序响应(从而避免沙滩球)的一个好的经验法则是永远不要在UI线程上执行同步IO.您可以使用异步IO(接受回调的API,在后台线程上工作,然后在UI线程完成时通知您),否则您可以使用单独的后台线程来完成工作.
如果你没有做IO,那么你可能在UI线程上有某种长循环,导致你没有响应.在这种情况下,优化或删除循环,或将其移动到后台线程.
| 归档时间: |
|
| 查看次数: |
3409 次 |
| 最近记录: |