2012-05-27 2 views
1

WebView에서 내 글꼴을 사용하려면 @ font-face/loadDataWithBaseURL을 사용하고 있습니다. 작동하지만 성능 문제가 있습니다. "loadDataWithBaseURL"을 사용하여 WebView의 내용을 변경할 때마다 글꼴이 다시로드되고 몇 초가 걸립니다.android : WebView 및 @ font-face, 매번 글꼴을 다시로드합니다.

@ font-face를 사용하지 않도록 설정하면 성능이 완벽합니다.

TTF는 에셋에 배치되고 css/html은 String에서 매번로드됩니다.

캐시를 사용해 보았지만 저장소 메모리에있는 파일을 사용하는 것처럼 보였으므로 아무런 차이가 없습니다. 아니면 내가 ... 잘못

myWebView.getSettings().setDomStorageEnabled(true); 
    String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath(); 
    myWebView.getSettings().setAppCachePath(appCachePath); 
    myWebView.getSettings().setAppCacheMaxSize(1024*1024*20); 
    myWebView.getSettings().setAllowFileAccess(true); 
    myWebView.getSettings().setAppCacheEnabled(true); 

도움말을 제발 사용했다.

상세 정보 :

응용 프로그램의 메모리 사용량이 증가하고 각 loaddata에서 성장 유지합니다.

Android 버전 2.3.5

답변

0

거의 작동하지 않는 방법을 찾았습니다. 여전히 메모리 누수가 있지만 이전 만큼은 아닙니다.

이전에는 WebView를 제거하고 다시 작성하지 않고 다시 작성합니다.

그런 식으로 글꼴을 기억합니다! 왜 나에게 물어 보지 마라. 나는 그것을 이해할 수 없다.

"ll1"은 WebView가 항상 마지막보기 인 my LinearLayout입니다. 나는 파괴도 전에 다시 만드는 널 객체를하지 않기 때문에

LayoutParams lparams = myWebView.getLayoutParams(); 
    ll1.removeView(myWebView); 
    myWebView = new WebView(myWebView.getContext()); 
    myWebView.loadDataWithBaseURL(null, text, "text/html", null, null); 
    myWebView.setOnTouchListener(this); 
    myWebView.setOnLongClickListener(this); 
    myWebView.setLayoutParams(lparams); 
    ll1.addView(myWebView); 

는 아마 메모리 누수가있다, 그러나 이것은 내가 괜찮은 속도와 메모리 사용과 함께 작업을 진행하게 볼 수있는 유일한 방법입니다.

누군가가이 동작을 설명하거나 더 나은 해결책을 제공하기를 바랍니다.