求高手给讲解一下JAVA中回调函数是怎么实现的.

Hinagi 2010-07-23 10:38:22
就是那些On****函数了
我想自己实现一个接口,里面有两个回调函数,分别是onViewOpened和onViewClosed

public static interface OnViewListener {
/**
* Invoked when the View becomes fully closed.
*/
public void onViewClosed(View v);
/**
* Invoked when the View becomes fully opened.
*/
public void onViewOpened(View v);
}


当我的类来实现这个接口的时候.系统怎么知道 在View被打开的时候去调用onViewOpened呢?
...全文
731 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sling2007 2010-07-23
  • 打赏
  • 举报
回复
打个酱油
我也看过浪客剑心
Hinagi 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sjh2007 的回复:]

参考下SERVLET中的doget和dopost方法
[/Quote]

没做过servlet



[Quote=引用 2 楼 yao2007 的回复:]

系统应该提供注册OnViewListener的方法,这样在相应的时间发生时,系统就会在相应的时间发生时调用OnViewListener了吧。
[/Quote]

具体怎么注册? 我现在就是不知道怎么让系统知道Open这个动作发生了.
yao2007 2010-07-23
  • 打赏
  • 举报
回复
系统应该提供注册OnViewListener的方法,这样在相应的时间发生时,系统就会在相应的时间发生时调用OnViewListener了吧。
sjh2007 2010-07-23
  • 打赏
  • 举报
回复
参考下SERVLET中的doget和dopost方法
BearKin 2010-07-23
  • 打赏
  • 举报
回复
好象有点绕嘴啊。。。 不过也能明白在啥地方使用回调函数了
BearKin 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 healer_kx 的回复:]
回调函数和线程没有必然关系,举个最简单的例子。

C语言的快速排序实现qsort,最后一个参数就是传入一个回调函数指针,这个函数就是在一个线程内被调用的。

而你熟悉的ajax方式,因为是JavaScript和浏览器相关的,实际上,没有一个准确的线程的概念的。这个回调的过程无所谓发生在你主调的函数的线程或者不是那个线程栈。

第二个问题也是无所谓的。回调的概念强调的是 调用者是代码的编……
[/Quote]
哦 谢谢您的讲解哦 重点是 调用者是代码的编写者,还是非代码的编写者。 我只是在想回调函数都可以做什么 然后越想越糊涂 慢慢就有点倾向其他方面的思想了。。

那么简单的说 回调函数就是在你调用一个函数的时候 同时提供给该函数一个回调函数 该回调函数将会在你调用的函数中被调用 大概这个意思吧?
healer_kx 2010-07-23
  • 打赏
  • 举报
回复
回调函数和线程没有必然关系,举个最简单的例子。

C语言的快速排序实现qsort,最后一个参数就是传入一个回调函数指针,这个函数就是在一个线程内被调用的。

而你熟悉的ajax方式,因为是JavaScript和浏览器相关的,实际上,没有一个准确的线程的概念的。这个回调的过程无所谓发生在你主调的函数的线程或者不是那个线程栈。

第二个问题也是无所谓的。回调的概念强调的是 调用者是代码的编写者,还是非代码的编写者。

从全局的角度看,不存在“回调”,一定是某人写的代码,调用了这个函数。
只是你作为一个客户代码的编写者来说,有些函数对你是主调的,有些是回调的。
它是无所谓等待不等待的,举两个例子。

伪码 快速排序 qsort

void qsort(int[] a, compare);
这里的compare的实参就是一个回调,排序的过程中,排序算法会 回调 compare实参。
compare的比较结果是算法需要的,那么这个就是要等待的。

再比如ajax,
默认的ajax是异步的,你的ajax请求发出后,是直接返回,继续执行你后面的代码的,
而在某一刻,回调才被调用的,而你没有等待它。

这里,回调的意味就是compare,不是你明确主调的,是别人的代码调用的。
BearKin 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 healer_kx 的回复:]
正好前几天回答过类似的问题,你看看这个帖子或许就明白了。
http://topic.csdn.net/u/20100722/15/1ba55315-3834-4e12-961b-5a37d5be6b26.html
[/Quote]

有几点我不明白

第一:我平时没有用过回调函数 或者说我可能没意识到自己在用回调函数 唯一印象就是AJAX的回调+异步 如果在JAVA中完成这个操作 是不是需要线程?
第二:跟第一个问题差不多 从我调用一个函数到那个函数调用我的函数 这个过程 '我'是否一直在等待着结果
healer_kx 2010-07-23
  • 打赏
  • 举报
回复
正好前几天回答过类似的问题,你看看这个帖子或许就明白了。
http://topic.csdn.net/u/20100722/15/1ba55315-3834-4e12-961b-5a37d5be6b26.html
Hinagi 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sling2007 的回复:]

打个酱油
我也看过浪客剑心
[/Quote]


好看哇

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧