【问题】
Android,即Java,中,需要一个函数中的某个参数是个函数,以此希望函数的回调。
即,实现类似于函数指针的效果。
【解决过程】
1. 参考:
但是觉得太复杂了,不应该这么麻烦的。
2. 再参考:
看似很不错。
最后终于自己写了对应的代码。
【总结】
在调用者中:
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);
//...
}
}
相对来说,还是不是那么复杂的。。。