思考,用同步還是異步?
實質就是屏蔽一些東西,讓使用者直接傳參數 拿結果 而不用關心具體實現
eg.登陸接口
1.定義接口LoginCallBack,兩個函數 請求成功和失敗
public interface LoginCallBack{ public void OnSuccess(SDKUser user); //登陸成功的回調,我們的需求是給調用者一個封裝好的SDKUser類,一些用戶信息的get/set 略 public void OnFailed(String msg); //傳給調用者錯誤信息 }
2. 對外暴露的SDK主類中,進行處理具體業務邏輯
public class SDK{ public static void login(String username,String password,LoginCallBack callback) { try{ //這里一般都在子線程或異步任務中處理 網絡請求(我用xutils3的異步任務+同步請求)
if(請求成功){ // 解析json為bean callback.OnSuccess(bean); }else {//根據失敗信息,調用接口失敗方法 callback.OnFailed("失敗信息"); } }catch(Exception e){ callback.OnFailed("失敗信息");
} }); }
3.使用者進行調用
SDK.login("admin","123456",new LoginCallBack(){//參數為賬號密碼 @Override public void OnSuccess(SDKUser user){ //請求成功后,這里調用者就可以拿到SDK主類中login方法里json解析后的bean } @Override public void OnFailed(String msg){ //請求失敗后,這里調用者可以拿到我們返回給他的提示信息 } });
由於接口既需要返回我們定義的數據通常為json等,有異常時又需要返回異常信息 所以接口通常都寫成異步處理,給調用者回調的方式
(同步情況就是返回參數不封裝直接返回給調用者,這個調用者要自己實現對返回信息的封裝)