Android单线程能否同时执行两个独立操作?触摸事件疑问
单线程环境下的操作执行逻辑(以Android onTouchEvent为例)
嘿,这个问题问到点子上了,刚好能帮你把单线程模型的核心逻辑捋清楚!
首先得明确:单线程环境下绝对做不到“同时执行”两个独立操作,所有代码都是串行执行的——必须等当前正在运行的代码块完全执行完,下一段代码才有机会运行。咱们结合你说的Android触摸场景具体分析:
- 当你在
onTouchEvent()的MotionEvent.ACTION_DOWN分支里写了一个无限循环,这个循环会直接霸占当前的主线程(UI线程)。因为Android的所有触摸事件回调、UI更新逻辑都在主线程里处理,主线程同一时间只能干一件事。 - 当你抬手触发
MotionEvent.ACTION_UP时,这个事件会被加入主线程的消息队列等待处理,但主线程此时正被无限循环死死卡住,根本没机会去读取消息队列里的新事件。 - 最终的结果就是:那个无限循环会一直跑下去(除非系统因为APP无响应强制杀掉它),
ACTION_UP对应的回调代码永远不会被执行,更不可能出现“两者同时运行”的情况。
顺带提一句,这种写法在实际开发里绝对要避免——主线程被卡死超过一定时间(通常是5秒),系统就会弹出**ANR(Application Not Responding)**提示,用户只能强制关闭你的APP。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

