就是那些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呢?

解决方案 »

  1.   

    参考下SERVLET中的doget和dopost方法
      

  2.   

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

  3.   


    没做过servlet
    具体怎么注册?   我现在就是不知道怎么让系统知道Open这个动作发生了.
      

  4.   

    正好前几天回答过类似的问题,你看看这个帖子或许就明白了。
    http://topic.csdn.net/u/20100722/15/1ba55315-3834-4e12-961b-5a37d5be6b26.html
      

  5.   


    有几点我不明白第一:我平时没有用过回调函数 或者说我可能没意识到自己在用回调函数 唯一印象就是AJAX的回调+异步 如果在JAVA中完成这个操作 是不是需要线程?
    第二:跟第一个问题差不多 从我调用一个函数到那个函数调用我的函数 这个过程 '我'是否一直在等待着结果
      

  6.   

    回调函数和线程没有必然关系,举个最简单的例子。C语言的快速排序实现qsort,最后一个参数就是传入一个回调函数指针,这个函数就是在一个线程内被调用的。而你熟悉的ajax方式,因为是JavaScript和浏览器相关的,实际上,没有一个准确的线程的概念的。这个回调的过程无所谓发生在你主调的函数的线程或者不是那个线程栈。第二个问题也是无所谓的。回调的概念强调的是 调用者是代码的编写者,还是非代码的编写者。从全局的角度看,不存在“回调”,一定是某人写的代码,调用了这个函数。
    只是你作为一个客户代码的编写者来说,有些函数对你是主调的,有些是回调的。
    它是无所谓等待不等待的,举两个例子。伪码 快速排序 qsortvoid qsort(int[] a, compare);
    这里的compare的实参就是一个回调,排序的过程中,排序算法会 回调 compare实参。
    compare的比较结果是算法需要的,那么这个就是要等待的。再比如ajax,
    默认的ajax是异步的,你的ajax请求发出后,是直接返回,继续执行你后面的代码的,
    而在某一刻,回调才被调用的,而你没有等待它。这里,回调的意味就是compare,不是你明确主调的,是别人的代码调用的。