Я использую @font-face/loadDataWithBaseURL для использования моего собственного шрифта в WebView. Он работает, но я столкнулся с проблемой производительности. Каждый раз, когда я изменяю содержимое WebView с помощью "loadDataWithBaseURL", он перезагружает шрифт, и это занимает несколько секунд.
Отключение @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);
Помоги пожалуйста.
Больше информации:
Использование памяти приложения продолжает расти и возрастать в каждой нагрузке.
Версия Android 2.3.5.
Я нашел очень уродливый способ заставить его работать. По-прежнему есть утечка памяти, но не так много, как раньше.
Он состоит в удалении 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 объект до создания снова, но это единственный способ заставить его работать с приличной скоростью и использованием памяти.
Я надеюсь, что кто-то сможет объяснить это поведение или дать лучшее решение.