我有一个网站(应用程序),其中包含很多javascript(注意:我可以将js命令发送到该网站中以打开任何视图)。该站点打开时间很长(解析,读取配置等需要20到30秒)。
我的应用程序在应用程序的不同部分具有许多WebView。例如-我具有100多个项目的listview,通过单击该项目应使用WebView(带有Web应用程序)打开新片段。
即我不想每次创建WebView时都重新打开该网站,这需要很长时间,我想一次打开该网站(!)并通过JS API使用它。
我认为解决方案应该是这样的: 1.当应用程序启动时,我应该在隐藏的Web视图中打开网站 2.存储Webview内容以备将来使用 3.用新的webview打开新片段,并插入存储在step2内容中 4.将JS命令发送到打开的网站
但是有一个问题:什么是存储完整的Webview内容以供重新使用的最佳方法?
我尝试过:
首先-应该从缓存中打开站点
web_view.settings.javaScriptEnabled = true
web_view.settings.domStorageEnabled = true
web_view.settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK
并将每个应用程序的内容保持为单例(例如)
val bundle = Bundle()
web_view.saveState(bundle)
mySingleton.myStateHolder = bundle
并在需要时将其还原
web_view.restoreState(bundle)
//send js command
太好了。但我期望: 1.缓存了webview状态,其中包含当前状态的完整内容,包括js和图像 2.必须保存和还原webview,并且没有任何错误(例如,网站未完全加载) 3.此解决方案必须可靠(!)。
我不确定这三点内容
无论如何,我可以尝试为每个应用程序使用一个webview,但是我认为这是非常糟糕的解决方案。纠正我,如果我错了。
这种情况下最好的方法是什么?