周沭玲,金 楠,侯海平
随着互联网技术的快速发展,各种应用软件层出不穷,例如即时通讯软件、办公软件、信息资讯、购物娱乐软件等,用户花在软件上的时间越来越多,时间不断被各种软件割裂,用户时间的碎片化越趋明显.通过应用软件占领用户的时间、增加用户粘度是企业追求的目标,实现这一目标的关键就是提升应用软件操作的用户体验.用户的操作响应速度则是提升应用软件用户体验的关键因素之一,通常一个用户无法忍受3~5 秒以上的响应等待.例如Android 操作系统中服务的响应时间要求为10 秒以内,广播消息的响应时间为10~60 秒,UI 操作的响应时间为5 秒以内.当程序响应超出这个时间,就会出现卡顿假死状态,用户被迫等待,无法进行软件的下一步操作[1].这就会造成用户放弃使用或者卸载该软件,软件用户的流失对于互联网时代的企业是无法接受的,因此减少UI 线程阻塞成为优化软件性能的主要研究对象[2].
大多数基于不同平台的开发框架都支持线程技术,开发者可以将耗时费力的工作任务迁移到子线程中去运行,从而减少主线程或者UI 线程压力[3],做到快速响应用户操作,然而这种解决传统单UI 线程阻塞问题的方法并不适合多UI 控件高并发访问场景.
本文提出一套多UI 线程高并发的解决方案,涉及多UI 线程、操作系统消息机制、子线程通信等知识.整体实验过程如下:首先,还原传统单UI 线程阻塞问题的解决方法;再次,模拟单个UI 线程高并发访问的问题场景,发现使用传统方法无法解决阻塞问题,从而引出操作系统消息机制;……