WebView Открывает белый экран случайным образом при показе PDF из документов Google

#android #xamarin.android

#Android #xamarin.android

Вопрос:

Я пытаюсь открыть PDF по URL-адресу в Webview. Это работает отлично. Но иногда, когда мы открываем WebviewActivity, он отображает белый пустой экран, а pdf не отображается. Это происходит в каждом 1 случае из 5 попыток. Ниже приведен мой код для клиента Webview. Приветствуется любая помощь.

    class MonkeyWebViewClient2 : WebViewClient {
        ImageView _imgViewBack,_imgViewForward, _imgRefresh;
        public MonkeyWebViewClient2(ImageView imgViewBack,ImageView imgViewForward,ImageView imgRefresh){
            _imgViewBack = imgViewBack;
            _imgViewForward = imgViewForward;
            _imgRefresh = imgRefresh;
        }


        public override void OnPageStarted (WebView view, string url, Bitmap favicon)
        {
            base.OnPageStarted (view, url, favicon);

            _imgRefresh.SetImageResource (Resource.Drawable.close);
            if(view.CanGoBack()){
                _imgViewBack.SetImageResource(Resource.Drawable.back_black_arrow);
            }else {
                _imgViewBack.SetImageResource(Resource.Drawable.NavArrowLeft);
            }
            if (view.CanGoForward()) {
                _imgViewForward.SetImageResource (Resource.Drawable.ArrowRight2);
            } else {
                _imgViewForward.SetImageResource (Resource.Drawable.NavArrowRight);
            } 
            _imgRefresh.Click  = (sender, e) => view.StopLoading ();
            //Console.WriteLine ("OnPageStarted");
        }
        public override void OnPageFinished (WebView view, string url)
        {
            base.OnPageFinished (view, url);

            _imgRefresh.SetImageResource (Resource.Drawable.refresh_icon);
            if (view.CanGoBack ()) {
                _imgViewBack.SetImageResource (Resource.Drawable.back_black_arrow);
            } else {
                _imgViewBack.SetImageResource (Resource.Drawable.NavArrowLeft);
            }
            if (view.CanGoForward ()) {
                _imgViewForward.SetImageResource (Resource.Drawable.ArrowRight2);
            } else {
                _imgViewForward.SetImageResource (Resource.Drawable.NavArrowRight);
            } 
            _imgRefresh.Click  = (sender, e) => view.Reload ();

            AndHUD.Shared.Dismiss();

        }
    }

    protected override void OnPause()
    {
        base.OnPause();
        if (InformationWebView != null)
        {
            InformationWebView.OnPause();
        }
    }

    protected override void OnResume()
    {
        base.OnResume();
        if (InformationWebView != null)
        {
            InformationWebView.OnResume();
        }
    }

    public override void OnBackPressed (){
        Finish();

    }
}
  

Комментарии:

1. Это происходит, когда вы возвращаетесь на эту страницу с другой или просто когда вы непосредственно открываете ее?

2. Это происходит, когда я возвращаюсь на эту страницу от другого @G.hakim

3. Я так и думал, что вы, возможно, захотите перезагрузить страницу, когда вернетесь к ней, иногда она теряет свое старое состояние

4. Нет, я каждый раз создаю для него новый экземпляр Activity. таким образом, сохранение старого состояния здесь отсутствует. @G.hakim

5. Код события выполняется до webview.loadUrl (url). Но управление не поступает внутрь onPageStarted () клиента WebView. @G.hakim