我正在使用@ 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。
答案 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,但这是我发现使用它的速度和内存使用效果不错的唯一方法。
我希望有人可以解释这种行为或提供更好的解决方案。