如何获取匿名内部类的数据

来源:互联网 发布:php ios aes加密解密 编辑:程序博客网 时间:2024/04/30 10:06

如何获取匿名内部类的数据

  • 最近写一个新闻类的APP,请求网路使用第三方框架,xutils3,请求数据成功后,在回调方法中可以获取服务端的json数据,一切看起来都是那么美好,but,在我想要把json数据拿出来的时候,就没有那么愉快了,莫名其妙的bug,而且是时有时无……
  • 追根溯源,打开logcat ,报空指针异常,一看就知道外部没有拿到匿名内部类的json数据,再往上找,并发修改异常concurrent 瞬间醒悟
  • 所以这里传值的容器要使用concurrent包下的容器 BlockingDeque
  • private String loadJson( int index)  {final BlockingDeque<String> temp = new    LinkedBlockingDeque<>(1);//使用okhttp框架请求网路 因为当前代码本来就运行在子线程中,所以使用okHttp框架更为方便//创建okHttpClient 对象OkHttpClient okHttpClient = new OkHttpClient();//创建一个Requestfinal Request request = new Request.Builder().url(GlobalConstant.SERVER_HOST + getKey() + "?index=" + index).build();//new CallCall call = okHttpClient.newCall(request);//请求加入调度call.enqueue(new okhttp3.Callback() {    @Override    public void onFailure(Call call, IOException e) {    }    @Override    public void onResponse(Call call, Response response) throws IOException {        String json = response.body().string();            temp.add(json);    }});try {    return temp.take();} catch (InterruptedException e) {    e.printStackTrace();    return null;}
0 0