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