gpt4 book ai didi

android - android 的事件监听器是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:59 25 4
gpt4 key购买 nike

如何从 View 对象中捕获事件?只有一个线程在运行:UI 线程(当我们还没有实现任何我们自己的线程时)。假设我已经为一个按钮实现了一个 onClickListener 并且这个按钮的功能是说“取消”。对于按钮引发的事件,即取消 UI 正在做的任何事情,它必须中断。是这样吗?它们是否像中断一样工作?

开发人员网站上的 API 指南解释得很漂亮,但仍然没有给出完整的图片。 http://developer.android.com/guide/topics/ui/ui-events.html

最佳答案

在内部,Android 正在运行一个事件循环来处理 UI 事件。有关漂亮的图表,请参阅 a third slide of this presentation .此线程用于将系统调用分派(dispatch)给 UI 元素:

The system does not create a separate thread for each instance of a component. All components that run in the same process are instantiated in the UI thread, and system calls to each component are dispatched from that thread.

(来源:Processes and Threads)

看看 Inside the Android Application Framework video来自 Google I/O 2008。它对事件循环(由 Looper 和 Message Queue 组成)有很好的解释。有趣的内容从视频中大约 26m 处开始。

onClick()方法将从与原始 setOnClickListener() 相同的线程调用被称为。如果它是主/UI 线程,那么您应该改变在监听器中执行长时间运行的任务 - 它们会阻塞 UI 线程并可能导致应用程序无响应。使用类似 AsyncTask 的解决方案相反。

请看this blog post详细教程。

关于android - android 的事件监听器是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17964835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com