package com.example.a1512qjd.model.inter;
import com.example.a1512qjd.net.OnNetListener;
public interface AdModel {
void getAd(OnNetListener onNetListener);
}
//
package com.example.a1512qjd.model;
import com.example.a1512qjd.bean.AdBean;
import com.example.a1512qjd.model.inter.AdModel;
import com.example.a1512qjd.net.Api;
import com.example.a1512qjd.net.OkhttpUtils;
import com.example.a1512qjd.net.OnNetListener;
import com.google.gson.Gson;
public class AdModelImp implements AdModel {
@Override
public void getAd(final OnNetListener onNetListener) {
OkhttpUtils.getInstance().doGet(Api.AD_URL, new OnNetListener() {
@Override
public void onSuccess(String result) {
AdBean adBean = new Gson().fromJson(result, AdBean.class);
if ("0".equals(adBean.getCode())){
onNetListener.onSuccess(result);
}
}
@Override
public void onFailed(Exception e) {
onNetListener.onFailed(e);
}
});
}
}
//
package com.example.a1512qjd.net;
import android.os.Handler;
import android.os.Looper;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkhttpUtils {
private static OkhttpUtils instance;
private final OkHttpClient okHttpClient;
private final Handler handler;
private OkhttpUtils() {
okHttpClient = new OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)//连接超时
.writeTimeout(20, TimeUnit.SECONDS)//写入超时
.readTimeout(20, TimeUnit.SECONDS)//读取超时
.build();
handler = new Handler(Looper.getMainLooper());
}
public static OkhttpUtils getInstance() {
if (instance == null) {
instance = new OkhttpUtils();
}
return instance;
}
/**
* GET请求
*
* @param url
*/
public void doGet(String url, final OnNetListener onNetListener) {
//创建Request
final Request request = new Request.Builder()
.url(url)
.build();
//发送请求
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
onNetListener.onFailed(e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//拿到服务器返回的数据
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
onNetListener.onSuccess(string);
}
});
}
});
}
}
//
package com.example.a1512qjd.net;
public interface OnNetListener {
void onSuccess(String result);
void onFailed(Exception e);
}
//
package com.example.a1512qjd.presenter;
public interface AdPresenter {
void getAd();
}
//
package com.example.a1512qjd.presenter;
import com.example.a1512qjd.bean.AdBean;
import com.example.a1512qjd.model.AdModelImp;
import com.example.a1512qjd.net.OnNetListener;
import com.example.a1512qjd.ui.inter.AdView;
import com.google.gson.Gson;
public class AdPresenterImp implements AdPresenter {
private final AdModelImp adModelImp;
private AdView adView;
public AdPresenterImp(AdView adView) {
this.adView = adView;
adModelImp = new AdModelImp();
}
@Override
public void getAd() {
adModelImp.getAd(new OnNetListener() {
@Override
public void onSuccess(String result) {
AdBean adBean = new Gson().fromJson(result, AdBean.class);
if (adView != null) {
adView.show(adBean);
}
}
@Override
public void onFailed(Exception e) {
if (adView != null) {
adView.showError(e);
}
}
});
}
public void detach() {
if (adView != null) {
adView = null;
}
}
}
//
package com.example.a1512qjd.ui.inter;
import com.example.a1512qjd.bean.AdBean;
public interface AdView {
void show(AdBean adBean);
void showError(Exception e);
}