Как уничтожить все веб-просмотры в RecyclerView? - PullRequest
1 голос
/ 20 февраля 2020

У меня есть 5 аудио, которые я передаю в адаптер, и в onbind я загружаю этот URL в веб-просмотре, когда я нажимаю кнопку «Назад», аудио не останавливается, я уничтожаю веб-просмотр, но он работает в последней позиции элемента веб-просмотра ..

У меня есть список 5 встроенных URL-адресов звукового облака , которые я передаю в Адаптер .

meditationFavSCAdapter = new MeditationFavSCAdapter(FavMeditationActivity.this, favMeditationList, this);
recyclerMeditationfav.setAdapter(meditationFavSCAdapter);

if(favMeditationList.size() > 0) {
  for(int i=0;i<favMeditationAPI.getData().size();i++) {
        favMeditationList.add(favMeditationAPI.getData().get(i));
  }
}
meditationFavSCAdapter.notifyDataSetChanged();

В пункте утилита просмотра я объявляю webview (xml вещь). И в методе Onbind я загружаю этот URL в веб-представлении.

videoWebView.getSettings().setJavaScriptEnabled(true);
videoWebView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT );
videoWebView.getSettings().setLoadWithOverviewMode(true);
videoWebView.getSettings().setUseWideViewPort(false);
videoWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36");
//Load Url
videoWebView.loadData(favMeditationList.get(position).getEmbedCode(), "text/html" , "utf-8" );

Для уничтожения веб-просмотра

public void destroyWebView() {
        if(videoWebView != null) {
            videoWebView.loadUrl("");
            videoWebView.loadData("", "text/html" , "utf-8" );
            videoWebView.clearHistory();

            // NOTE: clears RAM cache, if you pass true, it will also clear the disk cache.
            // Probably not a great idea to pass true if you have other WebViews still alive.
            videoWebView.clearCache(true);

            // Loading a blank page is optional, but will ensure that the WebView isn't doing anything when you destroy it.
            videoWebView.loadUrl("about:blank");

            videoWebView.onPause();
            videoWebView.removeAllViews();

            videoWebView.destroy();

            // Null out the reference so that you don't end up re-using it.
            videoWebView = null;
        }
    }

Я вызываю эту функцию, когда пользователь нажимает кнопку Назад

@Override
    public void onBackPressed() {
        meditationFavSCAdapter.destroyWebView();
        super.onBackPressed();
    }

Но этот код уничтожает последний веб-просмотр в утилизаторе. Поэтому, когда я воспроизводю первый звук веб-просмотра и нажимаю кнопку «Назад», звук по-прежнему воспроизводится в фоновом режиме, тогда как при воспроизведении последнего аудио (веб-просмотра) он останавливается при вызове backpressed. Так что мне нужно уничтожить все webview в переработке. Но я не знаю, как ...

...