2

我正在使用 @font-face/loadDataWithBaseURL 在 WebView 中使用我自己的字体。它有效,但我面临性能问题。每次我用“loadDataWithBaseURL”更改 WebView 的内容时,它都会重新加载字体,并且需要几秒钟。

禁用@font-face,性能完美。

TTF 放在 assets 中,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 中不断增长。

安卓版本 2.3.5。

4

1 回答 1

0

我找到了一种非常丑陋的方法来让它几乎不工作。仍然有一些内存泄漏,但没有以前那么多。

它包括删除 WebView 并再次创建它而不破坏它。

这样它就记住了字体!不要问我为什么,我看不懂。

“ll1”是我的 LinearLayout,其中 WebView 始终是最后一个视图。

    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);

也许内存泄漏是因为我在再次创建之前没有破坏或使对象为空,但这是我发现让它以良好的速度和内存使用率工作的唯一方法。

我希望有人可以解释这种行为或给出更好的解决方案。

于 2012-05-27T18:52:21.180 回答