/**
* Created by apple on 2017/6/9.
* 使用场景:给所有的Activity或者Fragment等其他需要的类调用
* 实现要求: 1、必须保证对象的唯一性
* 2、保证网络返回的数据在主线程中
* 1、定义变量
* 2、创建静态的单例方法
*
*
*/
public class Utills {
private volatile static Utills utills;
private OkHttpClient client;
private Handler handler;
//单例保证该方法执行后只能在同一时间使用同一个对象
public static synchronized Utills getInstance(){
if (utills == null) {
utills=new Utills();
}
return utills;
}
//构造方法
public Utills() {
this.handler = new Handler();
client =new OkHttpClient();
}
//创建接口是为了实现异步调用
interface CallBacks{
void getString(String ss);
}
//请求网络的方法 注意凡是在callback中的方法都是在子线程中执行
public void getNetData(String url, final CallBacks callBacks){
Request request=new Request.Builder().url(url).build();
client.newCall(request).enqueue(new Callback() {
@Override//请求网络失败,失败的原因可以通过IOException e该参数转成String打印出来
public void onFailure(Call call, IOException e) {
System.out.println("====="+e.toString());
}
@Override//请求网络成功,请求回来的数据在response中保存,请求的内容在Call任务中保存,同样可以打印出来
public void onResponse(final Call call, Response response) throws IOException {
final String result= response.body().string();
//为什么要使用handler.post是为了把内容发送到主线程中
handler.post(new Runnable() {
@Override
public void run() {
//run里面的方法都在主线中
callBacks.getString(result);
}
});
}
});
}
}
* Created by apple on 2017/6/9.
* 使用场景:给所有的Activity或者Fragment等其他需要的类调用
* 实现要求: 1、必须保证对象的唯一性
* 2、保证网络返回的数据在主线程中
* 1、定义变量
* 2、创建静态的单例方法
*
*
*/
public class Utills {
private volatile static Utills utills;
private OkHttpClient client;
private Handler handler;
//单例保证该方法执行后只能在同一时间使用同一个对象
public static synchronized Utills getInstance(){
if (utills == null) {
utills=new Utills();
}
return utills;
}
//构造方法
public Utills() {
this.handler = new Handler();
client =new OkHttpClient();
}
//创建接口是为了实现异步调用
interface CallBacks{
void getString(String ss);
}
//请求网络的方法 注意凡是在callback中的方法都是在子线程中执行
public void getNetData(String url, final CallBacks callBacks){
Request request=new Request.Builder().url(url).build();
client.newCall(request).enqueue(new Callback() {
@Override//请求网络失败,失败的原因可以通过IOException e该参数转成String打印出来
public void onFailure(Call call, IOException e) {
System.out.println("====="+e.toString());
}
@Override//请求网络成功,请求回来的数据在response中保存,请求的内容在Call任务中保存,同样可以打印出来
public void onResponse(final Call call, Response response) throws IOException {
final String result= response.body().string();
//为什么要使用handler.post是为了把内容发送到主线程中
handler.post(new Runnable() {
@Override
public void run() {
//run里面的方法都在主线中
callBacks.getString(result);
}
});
}
});
}
}