[英]Android anonymous callback functions
我已經開發了一個類來管理我對服務器的所有API調用(通過AsyncTask
),我希望在doInBackground()
,在onPostExecute()
向外部傳遞將在onPostExecute()
執行的回調函數。
這樣,我可以使我的通信類保持通用,並且Activity將向其發送回調以激活和更新UI。
知道我該怎么做嗎?
謝謝!
在這里,你去伴侶:
public class ApiMethods {
public interface OnCommandFinished {
public void onApiSuccess(String result);
public void onApiError(String error);
}
public void like(PARAMS .... , OnCommandFinished respondTo){
new runRequestTask(respondTo).execute(uri, params);
}
private class runRequestTask extends AsyncTask<Object, Void, String>{
private final OnAtomicCommandFinished mRespondTo;
public runRequestTask(OnCommandFinished respondTo){
mRespondTo = respondTo;
}
@Override
protected void onPostExecute(String result) {
// IF SUCCESS
mRespondTo.onAtomicSuccess(result);
// IF ERROR
mRespondTo.onApiError("404....");
}
}
}
要運行代碼,只需使用實現OnCommandFinished
的類調用like(...)
盡管答案被接受,但只需添加另一個真實的匿名實現即可。 希望這對別人有幫助。
您的界面:您可以在AsyncTask類中實現此功能。
public interface ImageLoaderListener{
void imageDownloaderCallBack(Bitmap bmp);
}
AsyncTask類的構造方法:
// declare interface variable
private ImageLoaderListener listener;
private String link;
public ImageDownloader(String link, ImageLoaderListener listener){
this.link = link;
this.listener = listener;
}
onPostExecution:
@Override
protected void onPostExecute(Void result){
listener.imageDownloaderCallBack(bitmap);
// your code, i was returning bitmap
}
在Activity類中的實現:
ImageDownloader imageDownloader = new ImageDownloader(url, new ImageLoaderListener(){
@Override
public void imageDownloaderCallBack(Bitmap bmp) {
// update Ui elements
}
});
imageDownloader.execute();
另外,您應該記住,如果需要根據imageDownloaderCallBack
返回值更新任何Ui元素,則應在函數本身內編寫該代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.