簡體   English   中英

Android匿名回調函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM