【已解决】 使用okhttp异步get()获取后台数据,返回数据给主线程处理,后台数据dataList如何传递?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
unbinder = ButterKnife.bind(this);
//隐藏屏幕顶部,沉浸式
statusBarHide(this);
/**
* 视频图片混播轮播,视频时长根据原视频数据,
* 图片轮播间隔时间为 setPageChangeMillis(5000);
* setVideoPlayLoadWait(100),轮播下一个item过渡准备时间
*/
getPicVideoList();//获取后台数据中的播放地址
mAdapter = new MediaVideoBannerAdapter(this, dataList);
picVidBanner.isAutoLoop(false);
picVidBanner.setAdapter(mAdapter)
// .setIndicator(new CircleIndicator(this))
// .setScrollTime(500)
.setIndicatorGravity(IndicatorConfig.Direction.CENTER);
mBannerVideoManager = new BannerVideoManager(this, picVidBanner, mAdapter, dataList);
mBannerVideoManager.setPageChangeMillis(5000);
mBannerVideoManager.setVideoPlayLoadWait(100);
//图片轮播
// intBanner();
}
private void getPicVideoList() {
// 打开 httpClient 客户端。
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.MILLISECONDS)
.build();
//创建请求内容
Request request = new Request.Builder()
.url(RequestUrl.BasePath + RequestUrl.application_getVideoList)
.get()
.build();
Call task = client.newCall(request);
//异步请求
task.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
Log.d(TAG, "onFailure--->" + e.toString());
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
int code = response.code();
List<ResourceBean> dataList = new ArrayList<>();
String responseData = response.body().string();
Log.d(TAG, "onResponse--->" + code);
// Log.d(TAG, "onResponse--->" + responseData);
Gson gson = new Gson();
picVideoBean = gson.fromJson(responseData, PicVideoBean.class);
if (picVideoBean != null) {
for (int i=0 ; i < picVideoBean.getData().getVideoList().size(); i++ ){
url = picVideoBean.getData().getVideoList().get(i).getFileUrl();
dataList.add(new ResourceBean(url,2));
Log.d(TAG, "dataList--->" + dataList.get(i).imageUrl);
}
}
}
});
}
【核心的问题是:okhttp中,异步请求回来onResponse中的数据如何才能给外部调用?】
给外部调用?这是什么意思啊。无法理解啊。最好就是能给出一个具体的场景。
回调
核心的问题是:okhttp中,异步请求回来onResponse中的数据如何才能给外部调用?