由于只有1个UI线程 - 所有事件侦听器都是程序化的吗?

时间:2017-09-09 18:24:18

标签: android multithreading

因为在Android中,每个应用默认为1个单独的UI线程 - 这是否意味着所有事件侦听器都仅限于程序执行?

(例如,即使页面上有30个按钮)无论我如何点击屏幕,一次只能激活一个View.OnClickListener?即使我同时点击2个按钮?

2 个答案:

答案 0 :(得分:2)

  

一次只能激活一个View.OnClickListener吗?

正确。

  

即使我同时点击2个按钮?

正确。这就是听众快速返回(亚毫秒)非常重要的原因,因此我们可以最大限度地减少单线程UI的影响。将任何可能较慢的工作 - 磁盘I / O,网络I / O,长时间计算等 - 移动到后台线程。

答案 1 :(得分:0)

是的,这对于推理您的计划非常有用。您永远不必担心UI线程中调用的方法中的赋值顺序等问题,因为在当前方法退出之前,UI线程中运行的其他方法都无法运行。例如,如果在UI线程中启动AsyncTask,则在当前方法返回之前,您知道其onPostExecute无法运行。如果您使用处理程序将内容发布到主循环器,则您知道它无法与任何组件生命周期方法同时运行。等等。