2012-05-27 32 views
1

我正在使用@ font-face/loadDataWithBaseURL在WebView中使用我自己的字體。它可以工作,但我面臨性能問題。每次我使用「loadDataWithBaseURL」更改WebView的內容時,它會重新加載字體,並且花費幾秒鐘。android:WebView和@ font-face,每次都重新加載字體

禁用@ font-face,表現很完美。

TTF放置在資產中,並且每次都從String中加載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

我發現一個非常醜陋的方式讓它幾乎沒有工作。仍然有一些內存泄漏,但沒有以前那麼多。

它包含刪除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); 

也許內存泄漏是因爲我不破壞,也再次創造之前,使空的對象,但是這是我發現得到它體面的速度和內存使用工作的唯一途徑。

我希望有人能解釋這種行爲或給出更好的解決方案。

相關問題