Как таймером обновлять картинку в WebView

Интерфейс, диалоги, темы, стили, меню
Ответить
apollox
Сообщения: 23
Зарегистрирован: 07 янв 2014, 13:51

Как таймером обновлять картинку в WebView

Сообщение apollox » 07 янв 2014, 14:41

Добрый день,
есть ip-камера, хочу с заданным интервалом обновлять изображение с нее, но поскольку только учусь писать под Андроид, не понимаю как таймеры правильно выставить.
Принцип должен быть такой - когда картинка загрузилась полностью в WebView, срабатывает аналог события onLoad в Javascript (вот не знаю как раз как его в Андроид реализовать), и в нем через заданный интервал заново загружается картинка.
Смысл в том, что новая загрузка должна начинаться только после того, как загрузилась предыдущая картинка, иначе может получиться так, что время загрузки картинки может быть больше установленного интервала, и тогда получится что картинка не успела загрузиться, а ее таймером уже по-новой тянет с камеры.

Подскажите плиз, вот что мне нужно написать в блоке между звездочками, ну или в какую сторону копать.

Код: Выделить всё

public class MainActivity extends Activity implements OnClickListener {
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);    
	
    WebView webView = (WebView) findViewById(R.id.webView);
    Button btnCamera = (Button) findViewById(R.id.btnCamera);
    btnCamera.setOnClickListener(this);   
  }
  
    public void onClick(View v) {                    
        webView.loadUrl("http://ip:port/path_to_camera_image/");
		
		*************
		// Когда картинка загрузилась, срабатывает webView.onLoad() и внутри его таймаутом через пол-секунды снова загружаем картинку,
		// и когда она загрузилась, снова срабатывает webView.onLoad(), и так по кругу.
		webView.onLoad() {
			setTimeout(webView.loadUrl("http://ip: port/path_to_camera_image/", 500);
		}
		************
		
    }
 
}

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как таймером обновлять картинку в WebView

Сообщение altwin » 07 янв 2014, 15:03

Грузить картинки нужно в background потоке и помещать в какой -то объект, предварительно на объект можно поставить Lock(), т.е. он будет не доступен другим, как только объект доступен - можно грузить следующую, ну а выполнить действие в потоке с заданным интервалом - postDelayd. Для всего этого можно использовать и синхронизацию, чтобы загрузка не начиналась до окончания таска. Ну или более Android way - publishResults() из doInBackground() и после того, как получите onProgressUpdate()


P.S. на самом деле примеров в google много, важно понять, что грузить картинки нужно не в основном потоке.
Изображение

apollox
Сообщения: 23
Зарегистрирован: 07 янв 2014, 13:51

Re: Как таймером обновлять картинку в WebView

Сообщение apollox » 07 янв 2014, 16:09

Спасибо, буду разбираться.

Ответить