android - on"XYZ"回调事件如何工作?

标签 android events event-handling callback

如果可能的话,我正在寻找概念解释或示例代码

我是 (android) 开发的新手,据我所知,有大量的“onEvent()”方法。例如,View.onClickListener()、onPageDownload、onProgressUpdate...我注意到一切都以“on”开头,我假设它暗示该方法是一个回调事件?这与处理程序是一回事吗?

我很难理解事件是如何工作的,以及制作我自己的事件处理程序的最佳方法是什么。

假设我想创建一个处理程序 onImageDownloaded(),当某个事件发生时它会被调用。就像我正在下载一个图像,我想在图像下载时触发​​一个事件(是的,我知道有一个叫做 AsyncTask 的东西,并且还从后台线程发布了一个可运行的消息,但是出于教学原因,我们假设该过程也可能在 UI 线程上)。 Android 如何知道调用方法 onImageDownloaded() ?或者更确切地说,我如何指定当下载图像时,我希望它调用我的方法 onImageDownloaded()

我读过有关广播 Intent 的信息,但这似乎更多是系统级别的,有点过头了。

我知道当你在 View 中制作一个按钮时,你可以这样做

final Button b = (Button) findViewById(R.id.mybutton);
b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d("MyActivity", "button is clicked");
    }
});

这几乎就像为按钮设置一个“钩子(Hook)”,在单击事件发生时调用特定的“onClick”。

在我的特殊情况下,我将如何根据操作“XYZ”创建自定义回调方法??

抱歉问题太长了,感谢您耐心阅读并尝试理解它

最佳答案

我们首先要了解什么是回调:

In computer programming, a callback is a reference to executable code, or a piece of executable code, that is passed as an argument to other code. This allows a lower-level software layer to call a subroutine (or function) defined in a higher-level layer.

Wickipedia: Callback

为了使我们的代码更具可重用性和优化性,我们需要回调。

比方说:您有一个从互联网下载数据的。如果你想让这个类更容易重用,你将定义一个 protocol(任何 class 构造)它将通知谁。之后符合该协议(protocol)(或实现该协议(protocol))的可以相应地使用下载的数据。

通常使用 interface 关键字进行回调,但也可以使用 abstract class 或简单的 class

Here is simple illustration how to make and use our own callbacks .

关于android - on"XYZ"回调事件如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8237458/

相关文章:

android - startActivityForResult 获取用户在 map 上输入的位置

android - 使用 Eclipse DDMS 将大文件推送到模拟器/SD 卡时出现问题

javascript - 在JavaScript事件处理中,为什么 "return false"或 "event.preventDefault()"和 "stopping the event flow"会有区别?

android - 错误 :Unable to resolve dependency. ..无法解析项目

Android 上的 Javascript onKeyPress 键代码始终为 0

java - Java 中有面板监听器吗?

java - java,android中的自定义事件? fireEvent 有什么作用?

events - ZF2,在模块启动时创建动态菜单

jquery 在右键单击事件中获取 <a> 元素的主机名

javascript - 在 JavaScript 中,是否可以设置事件来阻止捕获或冒泡阶段中的任何一个阶段的默认操作?