使用單例模式封裝網路工具類(okH)
阿新 • • 發佈:2018-11-19
我是用的是介面傳值,所以第一步是介面的建立
public interface NetWorkModelInterface {
//失敗
void failure(Exception e);
//成功
void success(String result);
}
工具類
public class NetWorkModel { //宣告介面 public static NetWorkModelInterface mNetWorkModelInterface; public void setNetWorkModel(NetWorkModelInterface netWorkModelInterface) { mNetWorkModelInterface = netWorkModelInterface; } //宣告類 private static volatile NetWorkModel mNetWorkModel; //私有構造 private NetWorkModel() { } //唯一靜態訪問 public static NetWorkModel getInstance(){ if(mNetWorkModel == null){ //上鎖 synchronized (NetWorkModel.class){ //例項化物件 mNetWorkModel = new NetWorkModel(); } } return mNetWorkModel; } public void neeeWooo(String path){ //建立client OkHttpClient client = new OkHttpClient.Builder() .readTimeout(10, TimeUnit.SECONDS) .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .build(); //建立request Request request = new Request.Builder() .url(path) .build(); //建立call Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //失敗操作 mNetWorkModelInterface.failure(e); } @Override public void onResponse(Call call, Response response) throws IOException { //成功 String string = response.body().string(); mNetWorkModelInterface.success(string); } }); } }
三、呼叫
NetWorkModel instance = NetWorkModel.getInstance(); instance.neeeWooo(path); instance.setNetWorkModel(new NetWorkModelInterface() { @Override public void failure(Exception e) { mNetWorkPrensenterInterface.failure(e); } @Override public void success(String result) { mNetWorkPrensenterInterface.success(result); } });