Я настраиваю UIWebView
, чтобы показать содержимое веб-камеры через URL-адрес, который извлекает поток MPJEG.
Я узнал, что если бы я захотел переключиться на другую камеру, она выглядела бы гладко, если бы я не reset все содержимое UIWebView
, а вместо этого настроил javascript-функцию на странице, загруженной в нее, чтобы заменить содержимое изображения, например:
<img id='iImage' src='about:blank'>
<script type='text/javascript'>
function show(url)
{
iImage.src = url;
}
</script>
Если бы я этого не делал, каждый раз, когда я переключался на новый URL-адрес, UIWebView
белел на секунду или два, пока новый контент не был готов к отображению, причем приведенный выше код просто заменяет содержимое напрямую, нет выделения.
Однако, если я переключаюсь между двумя видеопотоками, в какой-то момент я получаю сообщение об ошибке в UIWebView
, а в результате проб и ошибок я обнаружил, что это происходит в 4-й раз, когда я показываю один и тот же видеопоток в вид. Если я попытаюсь открыть 4 видеопотока в браузере-вкладках, четвертый застрял в цикле загрузки, пока я не закрою один из предыдущих трех.
Это заставляет меня думать, что:
- Камера, о которой идет речь, может одновременно обслуживать только три потока
- Изменение атрибута
src
в теге<img...>
не закрывает предыдущий поток
Можно ли связать это с keepalive? Могла ли система веб-браузера сохранить предыдущие потоки, даже если я прекратил показывать их в теге <img...>
?
В принципе, для воспроизведения я могу это сделать:
- Настройте содержимое выше в
UIWebView
- Назовите это 4 раза:
wv.EvaluateJavascript("show(url)")
На четвертом вызове я получаю синий знак вопроса посередине.
Может ли быть живым виновником? И если да, могу ли я его контролировать?