android:WebView和@ font-face,每次都重新加载字体

时间:2012-05-27 08:21:50

标签: android performance webview true-type-fonts

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

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

TTF放在资产中,每次从字符串中加载css / html。

尝试使用缓存,但似乎在存储内存中使用了一个文件,所以也许没有区别。 或许我错误地使用了它......

    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。

1 个答案:

答案 0 :(得分: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);

也许内存泄漏是因为我在重新创建之前没有销毁也没有使对象变为null,但这是我发现使用它的速度和内存使用效果不错的唯一方法。

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