我有一个使用AsyncTask来执行网络连接和api解析的应用程序,其中包含带有srt文件的视频网址
因此在onPostExecute()
中,我获得了每个项目的url视频和srt,然后将其与exoplayer一起传递以进行迁移和播放。
我面临的问题是我使用exoplayer库并在我的课程中调用它,这是调用的代码:
exoPlayerView = findViewById(R.id.exoPlayerView);
mExoPlayerHelper = new ExoPlayerHelper.Builder(this, exoPlayerView)
.addMuteButton(false, false)
.setUiControllersVisibility(true)
.setRepeatModeOn(true)
.setAutoPlayOn(false)
.setVideoUrls(SAMPLE_1)
.setSubTitlesUrls(new ArrayList<>(Arrays.asList(SUBTITLE)))
.setTagUrl(TEST_TAG_URL)
.setExoPlayerEventsListener(this)
.setExoAdEventsListener(this)
.addSavedInstanceState(savedInstanceState)
.setThumbImageViewEnabled(this)
.enableLiveStreamSupport()
.addProgressBarWithColor(getResources().getColor(R.color.colorAccent))
.setFullScreenBtnVisible()
.setMuteBtnVisible()
.createAndPrepare();
我之前将此库与静态url和srt一起使用,并且在Activity类的onCreate方法中可以正常工作 但是现在我需要在onPostExecute内调用它,以传递经过网络连接和解析后从api获得的url和srt,如下所示:
.setVideoUrls(SAMPLE_1)
.setSubTitlesUrls(new ArrayList<>(Arrays.asList(SUBTITLE)))
通过使用包含实数值的变量更改 SAMPLE_1 和 SUBTITLE
在onCreate()
方法中,我也可以传递savedInstanceState
,但现在在onPostExecute()
中,如何解决这个问题
.addSavedInstanceState(savedInstanceState)
这是我的AsyncTask的代码:
public class ShashaDetails extends AsyncTask<String, Void, ArrayList<DetailItem>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mLoadingIndicator.setVisibility(View.VISIBLE);
}
@Override
protected ArrayList<DetailItem> doInBackground(String... params) {
if (params.length == 0) {
return null;
}
String searchUrl = params[0];
URL channelRequestUrl = NetworkShasha.buildUrl(searchUrl);
try {
String results = NetworkShasha.getResponseFromHttpUrl(channelRequestUrl);
ArrayList<DetailItem> simpleJsonShashaData = JsonShashaDetail.getSimpleMovieStringsFromJson(test2.this, results);
}catch (IOException e){
e.printStackTrace();
}
return simpleJsonShashaData;
}
@Override
protected void onPostExecute(final ArrayList<DetailItem> results) {
mLoadingIndicator.setVisibility(View.INVISIBLE);
if (results != null && !results.equals("")) {
String url = results.get(0).getUrl();
String srt = results.get(0).getSrt();
mExoPlayerHelper = new ExoPlayerHelper.Builder(this, exoPlayerView)
.setVideoUrls(url)
.setSubTitlesUrls(new ArrayList<>(Arrays.asList(srt)))
.addSavedInstanceState(savedInstanceState);
showJsonDataView();
} else {
showErrorMessage();
}
}
那我该如何解决这种情况?