2014-10-11 4 views
0

webView로 이미지를 처음 열 때 (.bg css 클래스)로드 할 때마다 다음 열 때마다 올바르게로드됩니다. 왜?Android WebView가 처음으로 애셋에서 이미지를로드하지 않습니다.

코드 HTML : 조각에

<style> 
... 
.bg 
    { 
     background: url('image.png') center center no-repeat; 
     background-size: cover; 
     width: 100%; 
     height: 100%; 
     position: fixed; 
     top: 0; 
    } 
... 
</style> 
... 
<body> 
    <div class='bg'></div> 
    <div class='content'> 
    ... 
    </div> 
</body> 

코드 쇼 HTML :

_handler.Post(() => {       
        var settings = webView.Settings; 
        webView.Settings.JavaScriptEnabled = true; 
        webView.Settings.DomStorageEnabled = true; 
        settings.AllowFileAccess = true; 
        settings.AllowFileAccessFromFileURLs = true; 
        settings.AllowContentAccess = true; 
        settings.AllowUniversalAccessFromFileURLs = true; 
        settings.DefaultTextEncodingName = "utf-8"; 
        webView.Visibility = ViewStates.Visible; 
        webView.LoadDataWithBaseURL("file:///android_asset/", html, "text/html", "UTF-8", null); 
       }); 

UPD : 나는 모든 코드를 이동하는 경우 때문에 내가 그 아닌 동시성 문제를 생각한다 ui 스레드에 추가하고 모든 webView 가시성 변경 사항을 제거합니다.이 버그는 계속 재현됩니다.

+0

이것은 동시성 문제와 같습니다. 첫 번째로로드되기 전에 웹보기가 표시되고 다음로드에는 모두 첫 번째로드에서로드 된 데이터가 이미 표시됩니다. 그럴 경우'WebViewClient'를 하위 클래스로 분류하고로드 된 후에 웹보기를 표시하는'OnPageFinished'를 재정의하는 것이 좋습니다 –

+1

또 다른 것은'_handler.Post'를 사용하면 다음 UI 업데이트를 위해로드를 연기합니다 , 이것은 문제가되어서는 안된다. 그러나'Post'가 안전면에 있지 않고 시도 할 것이다. –

답변

0

같은 문제가 발생했습니다. 너와 같은 경우에 확실하지 않다. 나는 3 일 이상을 보냈고 다른 WebView 객체가 "모든 WebViews의 모든 레이아웃, 구문 분석 및 JavaScript 타이머를 일시 중지하는"일부 CPU 성능을 저장하기 위해 pauseTimers()를 호출한다는 것을 발견했습니다.

관련 문제