2015-02-20 1 views
2

Я создаю приложение, показывающее видео HTML5, для изучения программирования на Android, которое использует Floating WebView.WebView выполняет медленно, когда он подключен к WindowManager android

Он работает очень прерывно даже на устройстве, которое обновило WebView. (Я использую Nexus 5 на основе lollipop)

Пока он прикреплен к работе (не плавающий), он выполняет маслянистую гладкость. Даже если он плавающий, он работает плавно, если на текущей работе размещен 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); 

Есть ли обходной путь, чтобы обойти эту проблему?

EDIT Добавлен видео объясняет такое поведение: http://youtu.be/BPDxzRRO1N8 , прикрепив к деятельности, он выполняет маслянистый гладко: http://youtu.be/aQcJRPCZWYs на KitKat, по крайней мере, Samsung Galaxy, она ведет себя маслянистый гладкой: http://youtu.be/7Dw0tJ67eJw

Я ve также зарегистрировал ошибку в https://code.google.com/p/chromium/issues/detail?id=460440

ответ

-1

Я работаю над приложением с плавающим видеоплеером, и у меня была такая же проблема. Я не нашел основной причины проблемы, но я избавился от этой проблемы.

У меня есть активность, которая запускает плавающий видеопроигрыватель (в основном сервис, который использует тип TYPE_SYSTEM_ALERT), когда я добавил обработчик уведомлений, запущенный Activity (аналогично тому, который использовался Spotify), проблема исчезла ,

Как я уже сказал, я не смог определить основную причину проблемы, но кажется, что до тех пор, пока активность или что-то, запущенная в результате действия, будет «активной» (я использую термин активно) , вопрос не будет, и Webview будет вести себя так, как ожидалось.

0

Вы можете добавить

webView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); 

Надежда поможет вам

+0

Объясните, почему это должно решить проблему. – innoSPG

+0

Вы можете прочитать больше информации здесь http://developer.android.com/intl/vi/guide/topics/graphics/hardware-accel.html –

+0

Мой комментарий просто для того, чтобы сохранить ваш ответ на SO, а не понимать его , По правилам ответы должны быть автономными, а слишком короткие ответы подлежат модерации и обычно удаляются. Вот почему я просил вас разработать вместо голосования за удаление. – innoSPG

Смежные вопросы