gpt4 book ai didi

java - 什么调用 Android View.OnClickListener API 方法?

转载 作者:搜寻专家 更新时间:2023-11-01 09:25:40 26 4
gpt4 key购买 nike

我已经学习 OOP 大约 2 到 3 年了,但我对接口(interface)仍然很困惑。

例如,在 Java 中有一个名为 View.OnClickListener 的接口(interface)。现在我知道实现这个接口(interface)的类必须为其抽象方法提供主体,但我没有得到的是,在 API 文档中它写的是当 View 被调用时调用 onClick 方法点击。

那么这个方法是谁调用的呢?是否有任何其他类实现该接口(interface),然后在单击 View 时以某种方式调用该方法?

链接(https://developer.android.com/reference/android/view/View.OnClickListener)

最佳答案

您对接口(interface)的困惑可能远没有您想象的那么多。

基本上,像Android的view framework、经典的Java Swing、JavaFX、Eclipse SWT等GUI框架都是大而复杂的1。但它们都是通过“颠倒”应用程序来工作的。不是您的应用程序代码控制一切,而是框架在控制。您的应用程序注册了一堆监听器或“回调”。然后它将控制权交给框架,并等待被回调做一些事情。

GUI 框架将有一个主“事件线程”,它读取来自设备的低级事件流(鼠标的点击和移动,或触摸屏事件,键盘上的按键按下和释放,等等)。对于每一个事件,它将低级别事件映射到您应用程序的适当部分,然后调用您的应用程序以告知发生了某些事情。

假设 Android 用户用手指点击屏幕。该框架会将触摸屏事件的物理屏幕位置转换为应用程序某些“组件”的虚拟屏幕位置。如果该组件是一个按钮,并且您(之前)为该按钮注册了一个 OnClickListener,则框架会找到该按钮,并调用监听器的 onclick() 方法告诉您的应用程序“这个按钮刚刚被点击”。

这一切都相当简单和优雅……而且听起来不错的 OOP。但是您的代码和框架之间的关系与您的预期完全相反。


1 - 太复杂了,大多数人无法完全理解。尽管实际上,您不需要完全理解它们就可以使用它们。

关于java - 什么调用 Android View.OnClickListener API 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50892638/

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