WebView附加到WindowManager时,WebView执行速度很慢

时间:2015-02-20 05:33:08

标签: android webview

我创建的应用程序显示HTML5视频,用于学习使用Floating WebView的Android编程。

即使在已升级WebView的设备上,它也会表现得非常不稳定。 (我使用棒棒糖动力的Nexus 5)

当它附加在Activity(不浮动)上时,它会执行黄油光滑。 即使它是浮动的,当任何WebView置于当前活动时,它也会顺利执行。 但是,如果当前活动中没有像发射器这样的WebView,那么它会表现得非常缓慢和紧张。

以下是我使用的代码的一部分:

    WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    WebView = new WebView();
    WindowManager.LayoutParams paramsRL = new WindowManager.LayoutParams(
            800,
            450,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
            PixelFormat.TRANSLUCENT);
    paramsRL.gravity = Gravity.TOP | Gravity.LEFT;

    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    webView.loadUrl("html5_video_page_URL_here");
    windowManager.addView(webView,paramsRL);

是否有解决此问题的解决方法?

修改 添加了视频说明此行为:http://youtu.be/BPDxzRRO1N8 当附加到某个活动时,它会执行黄油顺利:http://youtu.be/aQcJRPCZWYs 在Kitkat,至少是三星Galaxy,它表现得很柔和:http://youtu.be/7Dw0tJ67eJw

我还提交了一个错误 https://code.google.com/p/chromium/issues/detail?id=460440

2 个答案:

答案 0 :(得分:0)

您可以添加

webView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null);

希望帮助你

答案 1 :(得分:-1)

我一直在研究使用浮动视频播放器的应用程序,我遇到了同样的问题。我没有找到问题的根本原因,但我摆脱了这个问题。

我有一个启动浮动视频播放器的活动(基本上是一个使用TYPE_SYSTEM_ALERT类型的服务),当我添加一个由活动启动的通知播放器时(类似于Spotify使用的通知播放器),问题就消失了。

正如我所说,我无法确定问题的根本原因,但似乎只要活动开始的活动或某事是“活跃的”(我正在松散地使用活动一词),问题不会发生,Webview将按预期运行。