继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

关于回调的个人深刻理解

浮云间
关注TA
已关注
手记
粉丝 16
获赞 47

我们大概先来了解一下什么是回调,如下图:

5ba0be5e00012d7103920166.jpg

从上图我们可以很直观的认识到回调的主要流程,这里我不再作详细的介绍,可以参考:http://www.2cto.com/kf/201412/365788.html

这里主要是讲解回调在异步任务机制中的运用,自己的理解和体会。

首先,我们从底层开始:

定义两个回调接口:

[代码]xml代码:

?


public interface IGetJSONAsyncTaskListener {//接口        void onPreGetJSON();        void onGetJSONCallback(String jsonResult);    }


然后运用回调:

[代码]xml代码:

?


private IGetJSONAsyncTaskListener mGetJSONAsyncTaskListener;     public GetJSONAsyncTask(IGetJSONAsyncTaskListener getJSONAsyncTaskListener) {        this.mGetJSONAsyncTaskListener = getJSONAsyncTaskListener;    }

异步加载显示:

[代码]xml代码:

?


@Override    protected void onPreExecute() {        this.mGetJSONAsyncTaskListener.onPreGetJSON();    }

?


@Override    protected void onPostExecute(String result) {        this.mGetJSONAsyncTaskListener.onGetJSONCallback(result);    }

用回调把json结果写在textview上

[代码]xml代码:

?


GetJSONAsyncTask getJSONAsyncTask = new GetJSONAsyncTask(        new GetJSONAsyncTask.IGetJSONAsyncTaskListener() {            @Override            public void onPreGetJSON() {            }             @Override            public void onGetJSONCallback(final String jsonResult) {                List<NewsBean> list = getJsonData(jsonResult);                NewsAdapter adapter = new NewsAdapter(context, list, mListView);                mListView.setAdapter(adapter);//把json结果写到textview上            }        });


最终达到了 需要改变哪个view上的显示数据,只需要写上面最后一副的代码即可,不需要重复,比较的方便有效。

这就是回调和异步机制的结合。

原文链接:http://www.apkbus.com/blog-708270-63595.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP