在onPostExecute而不是onCreate方法中使用库的问题

时间:2018-10-02 08:59:37

标签: java android

我有一个使用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();
            }
        }

那我该如何解决这种情况?

0 个答案:

没有答案