最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Android(Java)中如何实现函数回调(类似于传递函数指针)

Android crifan 5039浏览 0评论

【问题】

Android,即Java,中,需要一个函数中的某个参数是个函数,以此希望函数的回调。

即,实现类似于函数指针的效果。

 

【解决过程】

1. 参考:

Java Tip 10: Implement callback routines in Java

但是觉得太复杂了,不应该这么麻烦的。

2. 再参考:

How to Define Callbacks in Android?

看似很不错。

最后终于自己写了对应的代码。

 

【总结】

在调用者中:

1.实现对应的函数,执行对应的功能

2.把该函数,作为一个变量一样,传递给,对应的被调用的类的那个属性(变量)

import crifan.com.crifanLib;

/** Called when the user clicks the Download button */
public void preformDownload(View view) {
    /* just like define a variable, implement that callback function, then assign to the class's attribute */
    crifanLib.UpdateProgressCallback updateProgressCallback = new crifanLib.UpdateProgressCallback() {
        public void updateProgress(long currentSize, long totalSize){
            /* do what you want to do here */
        }
    };

    songtaste.stDownloadFromUrl(strSongUrl, fullFilename, updateProgressCallback);
}

 

在被调用的类中:

1.定义对应的interface(供调用者实现对应的接口函数)

2.在被调用函数中,把该接口参数,直接当做函数,来使用

package crifan.com;

public class crifanLib {
    // define a interface
    public interface UpdateProgressCallback
    {
        // This is just a regular method so it can return something or
        // take arguments if you like.
        public void updateProgress(long currentSize, long totalSize);
    }

    public Boolean downlodFile(String url, File fullFilename, HttpParams headerParams, UpdateProgressCallback updateProgressCallbak)
    {
        //...
        // call this function as normal
        updateProgressCallbak.updateProgress(downloadedSize, totalSize);
        //...
    }
}

相对来说,还是不是那么复杂的。。。

转载请注明:在路上 » 【已解决】Android(Java)中如何实现函数回调(类似于传递函数指针)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.167 seconds, using 22.34MB memory