您的位置:首页 > 移动开发 > Android开发

关于接口的一个使用,我觉得比较不错

2017-08-01 11:07 274 查看
在实际的开发中,比如要有一个耗时操作请求数据,在请求玩数据之后才能使用得到的数据完成接下来的操作,那么正常的逻辑就是要这么循序渐进的进行,但是按照java语义,它会直接跳过,只要执行了耗时操作之后不等你结束就执行之后的语句:

Data data= MyService.getData(url);//从服务器取数据
textview.setText(data.getText());

上面的两行代码如果直接运行,就肯定会出空指针,data没有值。因为耗时操作不等待,直接执行到下面。
那么为了实现我们的需求我们可以利用接口来实现,首先定义一个接口,里面使用泛型:public interface Callback <T>{//这里泛型是因为,我们每次请求的数据类型是不一样的
void callback(T t);
}

具体代码:

代码段1:
Data data= MyService.getData(url,new Callback<Data>() {
@Override
public void callback(Data data) {
textview.setText(data.getText());
}
});//从服务器取数据

代码段2
public Data   getData(String url,Callback<Data> callback){
//取数据的具体操作
........
//去完之后回调:
callback.callback(data);
}


这样我们就可以实现我们之前所想要的逻辑了。
上面的代码可以这么理解,getdata的时候执行到最后一步callback,但是没有找到方法体,所以回去调用getdata方法中找方法体,然后执行getdata中的方法体。也可以这么理解先执行代码段1调用getdata,跳到代码段2 执行,再跳回代码段1执行具体callback方法体,这时候代码段1执行结束,随之代码段2执行结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java android开发
相关文章推荐