当启动画面显示时,Android如何预加载一个URL到WebView中?

5
我有一个应用程序,其中有一个闪屏界面,几秒钟后打开一个具有WebView的主活动。 问题在于,只有在那时,主活动才开始加载URL,这有时需要几秒钟的时间。 这似乎为双倍等待愚蠢。 然而,我尝试预加载WebView的尝试不成功。
问题的实质是闪屏界面和主要活动是两个不同的活动,并且WebView是与主要活动相关联的资源绑定(布局)。复制WebView(webview2 = webview1)无效,这并不令人惊讶。
有什么建议吗?
2个回答

8
请按照以下步骤操作:

1) 在屏幕上设置闪屏布局。

2) 开始一个新线程,在该线程中填充包含 WebView 的布局。

3) 在 WebView 中加载 URL。将 WebView 客户端设置为 WebView,以知道页面何时加载完成。 这里有一个快速示例。重写 onPageFinished。

4) 现在中断线程并将此充气视图传递到下一个活动,并将其设置为 setContentView(inflatedView);

谢谢。


我正在尝试您的建议,但是当我尝试在线程内进行膨胀时,它会抛出一个晦涩的异常(二进制XML文件第15行:Error inflating class android.webkit.WebView)。在堆栈跟踪中稍后,更具信息性的内容是: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()。以前从未见过这种情况。 - James John McGuire 'Jahmic'
创建一个Handler并从该线程调用Handler。除了UI线程之外的线程无法访问UI元素。或者在UI线程中完成所有操作。您将不得不寻找解决方法。 - N-JOY
这现在运行得很好。不过页面仍然加载得太慢了。;) - James John McGuire 'Jahmic'
3
我有一个问题:在第4点中,你如何将已充气的视图从一个活动传递到另一个活动? - Mugur

0
创建一个带有闪屏的布局,将其置于Webview之上,并在X秒后将setVisibility设置为View.GONE。如果您在onCreate中加载Webview,则它将被加载到闪屏后面,当闪屏消失时,您已经加载了Webview :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接