public interface HttpCallbackListener{
void onFinish(Stringresponse);
void onError(Exceptione);
}
publicclassHttpUtil{
publicstaticvoid sendHttpRequest( finalStringaddress,final HttpCallbackListener listener){
newThread(newRunnable(){
@Override
publicvoid run(){
HttpURLConnection connection = null;
try{
URLurl= newURL(address);
connection =(HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setDoInput(true);
connection.setDoOutput(true);
InputStreamin= connection.getInputStream();
BufferedReaderreader= newBufferedReader(new InputStreamReader(in));
StringBuilderresponse= newStringBuilder();
String line;
while((line = reader.readLine())!= null){
response.append(line);
}
if(listener != null){
//回调onFinish()方法
listener.onFinish(response.toString());
}
}catch(Exceptione){
if(listener != null){
//回调onError()方法
listener.onError(e);
}
}finally{
if(connection != null){
connection.disconnect();
}
}
}
}).start();
}
}
HttpUtil.sendHttpRequest(address,newHttpCallbackListener(){
@Override
publicvoidonFinish(Stringresponse){
//在这里根据返回内容执行具体的逻辑
}
@Override
publicvoidonError(Exceptione){
//在这里对异常状况进行处理
}
});
在三层中,当业务层调用数据层时,是不须要把业务层自身传递到数据层的,而且这是一种上层调用下层的关系,好比咱们在用框架的时候,通常直接调用框架提供 的API就能够了,但回调不一样,当框架不能知足需求,咱们想让框架来调用本身的类方法,怎么作呢?总不至于去修改框架吧。许多优秀的框架提几乎都供了相关 的接口,咱们只须要实现相关接口,便可完成了注册,而后在合适的时候让框架来调用咱们本身的类,还记不记得咱们在使用Struts时,当咱们编写 Action时,就须要继承Action类,而后实现execute()方法,在execute()方法中写我们本身的业务逻辑代码,完成对用户请求的处 理。由此能够猜想,框架和容器中会提供大量的回调接口,以知足个性化的定制。android