Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将菜单相关事件称为“a”是否有意义;回调函数";?_Android_Events_Callback - Fatal编程技术网

Android 将菜单相关事件称为“a”是否有意义;回调函数";?

Android 将菜单相关事件称为“a”是否有意义;回调函数";?,android,events,callback,Android,Events,Callback,我正在学习android记事本教程: 在Notepadv2的第5步中,它说: onListItemClick()是我们将重写的回调方法 我对回调的概念有点陌生,但通过研究,我的理解是回调是在一个进程中提供的代码,当另一个进程达到某个结果时执行。是什么使这个特定事件成为回调,而不是其他事件 这是回调吗?因为只有当用户执行某项操作时才会调用它(在本例中,单击列表项)?但如果是这样的话,那么任何事件都不能被视为回调,因为它只有在自身之外的事情发生时才被调用?还是我遗漏了什么 我的理解是回调是您在一个进

我正在学习android记事本教程:

在Notepadv2的第5步中,它说:

onListItemClick()是我们将重写的回调方法

我对回调的概念有点陌生,但通过研究,我的理解是回调是在一个进程中提供的代码,当另一个进程达到某个结果时执行。是什么使这个特定事件成为回调,而不是其他事件

这是回调吗?因为只有当用户执行某项操作时才会调用它(在本例中,单击列表项)?但如果是这样的话,那么任何事件都不能被视为回调,因为它只有在自身之外的事情发生时才被调用?还是我遗漏了什么

我的理解是回调是您在一个进程中提供的代码,当另一个进程达到某个结果时执行

不完全是

将回调描述为“对可执行代码的引用,或作为参数传递给其他代码的一段可执行代码”。这可能是这个词的最佳用法。在本例中,由于Java操作是以方法的形式出现的,“回调方法”是作为回调结果调用的方法

这是回调吗?因为只有当用户执行某项操作时才会调用它(在本例中,单击列表项)

不完全是

这是一种回调方法,因为Android框架的其他部分正在检测一个事件(在本例中,用户点击列表中的一个项目),并调用
onListItemClick()
回调方法来控制

但如果是这样的话,那么任何事件都不能被视为回调,因为它只有在自身之外的事情发生时才被调用


通常,“回调”用于在检测事件的模块和实现回调以处理事件的模块之间存在明确定义的不透明边界的情况。在本例中,您没有编写Android操作系统,因此,
onListItemClick()
是对您自己的代码的回调,操作系统将调用它来让您处理列表项单击。

Commonware的答案要完整得多,但我想我可以稍微简化一下解释

回调是被回调的东西。从概念上讲,您声明您对某个特定事件感兴趣(例如,当某个任务完成时,单击按钮,经过的时间,等等),并指示代码在事件发生时给您回电话

这就像拿起电话告诉某人“准备好了再给我打电话”。回调的形式不是电话调用,而是函数调用


您调用一个函数并将其交给回调函数,该函数在适当的时候将回调函数。

感谢您帮助我理解这一点。我仍然不明白的是——如果回调的一个要求是传递一段代码或对代码的引用,那么在这种情况下,我在哪里传递代码?我不必告诉其他代码调用该方法,它是作为事件的结果来调用的。它是否满足回调的要求,仅仅因为它是从我自己没有编写的模块调用的,即使我不必将该方法传递给其他代码?再看一些示例代码,它包括以下
startActivityForResult(I,ACTIVITY\u EDIT)我假设常数是正在传递的“对代码的引用”?在这种情况下,当外部代码最终回调时,它会将该常量的值传递回activityresult()
(我编写的),这样我就知道如何解释它对我的函数的调用了?它实际调用的函数是
onActivityResult()
。这不就是回调吗?或者这只是一个语义问题?“它满足回调的要求吗?仅仅因为它是从我自己没有编写的模块调用的,即使我不必将该方法传递给其他代码?”--是的。在面向对象编程中,它被称为“继承”。“我假设该常量是正在传递的“对代码的引用?”--否。“它将传递回该常量的值……因此我知道如何解释它对我的函数的调用?”--是的。“或者这只是一个语义问题?”——如果你不喜欢那里的文档,欢迎你自己编写Android文档。