>  기사  >  웹 프론트엔드  >  ## 내 Android WebView가 제대로 작동하지 않는 이유는 무엇인가요? 빈 페이지, 응답하지 않는 스타일, 고르지 못한 애니메이션 - 어떻게 해결합니까?

## 내 Android WebView가 제대로 작동하지 않는 이유는 무엇인가요? 빈 페이지, 응답하지 않는 스타일, 고르지 못한 애니메이션 - 어떻게 해결합니까?

DDD
DDD원래의
2024-10-26 11:11:02227검색

##  Why is my Android WebView behaving so poorly? Blank pages, unresponsive styles, choppy animations - how do I fix it?

Android WebView 문제: 빈 렌더링, 응답하지 않는 스타일 변경 및 고르지 못한 애니메이션

Android WebView는 종종 빈 페이지 표시, 무시 등을 포함하여 비정상적으로 동작합니다. CSS가 변경되고 애니메이션이 고르지 않게 표시됩니다. 이러한 문제는 실망스럽고 사용자 경험을 방해할 수 있습니다. 다행히도 이 토론에서 살펴보겠지만 이러한 문제에 대한 해결책이 있습니다.

해결책 1: 하드웨어 가속 활성화

Android 4.4(KitKat)부터 하드웨어 가속은 WebView 성능을 향상시키는 데 중요합니다. AndroidManifest.xml에서 안에 다음 줄을 추가하여 하드웨어 가속을 활성화합니다. 태그:

<code class="xml"><application
   ...
   android:hardwareAccelerated="true"></code>

해결책 2: 강제 다시 그리기

WebView 클래스의 정적 최종 부울 변수를 사용하면 지속적인 뷰 다시 그리기가 가능합니다. 이렇게 하면 응답하지 않는 스타일 변경 및 빈 렌더링 문제를 해결할 수 있습니다. 그러나 이 방법을 사용하면 배터리가 지속적으로 소모됩니다.

아래 표시된 대로 WebView 클래스를 확장하고 onDraw() 메서드를 재정의합니다.

<code class="java">import org.apache.cordova.CordovaWebView;

import android.content.Context;
import android.graphics.Canvas;

public class MyWebView extends CordovaWebView {
    public static final String TAG = "MyWebView";

    public MyWebView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Warning! This will cause the WebView to continuously be redrawn
        // and will drain the devices battery while the view is displayed!
        invalidate();
    }

}</code>

이 사용자 정의 WebView 클래스를 사용하도록 PhoneGap에 지시합니다.

<code class="java">public void init(){
    CordovaWebView webView = new MyWebView(MainActivity.this);
    super.init(webView, new CordovaWebViewClient(this, webView), new CordovaChromeClient(this, webView));
}</code>

해결책 3: CrossWalk WebView

Android 버전 4.4 이상의 경우 CrossWalk는 뛰어난 성능과 안정성을 갖춘 드롭인 WebView 대체품을 제공합니다. 자세한 내용은 crosswalk-project.org에서 확인할 수 있습니다.

추가 팁:

  • WebView 렌더링 우선순위를 높게 설정하세요: appView.getSettings(). setRenderPriority(RenderPriority.HIGH)
  • 필요 시 플러그인 활성화: appView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND)
  • 최신 WebView API를 사용하고 지원되는 최소 API를 사용하고 있는 것입니다.
  • Apply -webkit-transform:translate3d(0,0,0); 성능을 향상시키기 위해 CSS의 다양한 요소에 적용합니다.
  • WebView를 확장하고 onDraw() 메서드를 무효화()로 재정의하는 사용자 정의 클래스를 사용하여 필요한 경우에만 강제로 다시 그리기를 수행합니다.
  • 커뮤니티 위키를 활성화하여 다른 사람들이 이 답변을 최적화할 수 있도록 허용하세요.

위 내용은 ## 내 Android WebView가 제대로 작동하지 않는 이유는 무엇인가요? 빈 페이지, 응답하지 않는 스타일, 고르지 못한 애니메이션 - 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.