栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何处理AsyncTask的返回值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何处理AsyncTask的返回值

您可以通过对返回的AsyncTask调用AsyhncTask的get()方法来获得结果,但是当它等待获取结果时,它将把它从异步任务变成同步任务。

String serverResponse = apiObj.execute(namevaluePairs).get();

由于您的AsyncTask位于单独的类中,因此您可以创建一个接口类并在AsyncTask中对其进行声明,并以您希望从中访问结果的类中的委托形式实现新的接口类。此处提供了一个很好的指南:由于AsyncTask是一个单独的类,如何将OnPostExecute()的结果获取到主要活动中?。

我将尝试将以上链接应用于您的上下文。

(IApiAccessResponse)

public interface IApiAccessResponse {    void postResult(String asyncresult);}

(ApiAccess)

public class ApiAccess extends AsyncTask<List<NamevaluePair>, Integer, String> {...    public IApiAccessResponse delegate=null;    protected String doInBackground(List<NamevaluePair>... namevaluePairs) {        //do all your background manipulation and return a String response        return response    }    @Override    protected void onPostExecute(String result) {        if(delegate!=null)        { delegate.postResult(result);        }        else        { Log.e("ApiAccess", "You have not assigned IApiAccessResponse delegate");        }    } }

(您的主类,实现IApiAccessResponse)

ApiAccess apiObj = new ApiAccess (0, "/User");//Assign the AsyncTask's delegate to your class's context (this links your asynctask and this class together)apiObj.delegate = this;apiObj.execute(namevaluePairs); //ERROR//this method has to be implement so that the results can be called to this classvoid postResult(String asyncresult){     //This method will get call as soon as your AsyncTask is complete. asyncresult will be your result.}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号