逝姿飞鱼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

      整个结构是这样的,查单词后动态显示词典内容,需要网页,也就是webview动态加载js文件css文件,和html内容。

    原来的设计是在webview中加上JavaInterface,在Html加载时调用,回到程序的主线程来获取数据。.js的加载方式由webview来实现,LoadUrl,加上一段js代码,因为js代码比较简单,所以不会有效率上的问题。

css是用document.add 的方法加载,css的文件名也是从主线程中拿到。

    问题来了,在Android 3.0以上的系统上,不能够执行加载CSS的方法,应该是浏览器内核中的代码有所修改,屏蔽了动态加载的接口。

    于是采用了一种笨方法,把css的文件名固定,html中调用,然后每次显示的时候都把词典的css拷贝到相应的目录中去,重命名为固定的名字。

   这个方法引起了效率上的极大下降,但为了在4.0上能显示css,只好这样做了。

     好,有点偏题了。。下面开始说正经内容。当Webview加载一个css之后,即使Acitivity被销毁,可能他的实例还在,webview的实例还在,所以当再一次加载css文件时,同命的css文件中的内容没有被替换掉,

而是使用了以前的缓存的css内容。解决办法是调用

  

public void clearCache (boolean includeDiskFiles)

Since: API Level 1
Clear the resource cache. Note that the cache is per-application, so this will clear the cache for all WebViews used.
Parameters

includeDiskFiles    If false, only the RAM cache is cleared.

 

  这个函数来清空缓存,之后该干嘛干嘛,没有后顾之忧。

posted on 2012-05-27 19:25  逝姿飞鱼  阅读(670)  评论(0编辑  收藏  举报