Страница 1 из 1

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

Добавлено: 07 янв 2014, 14:41
apollox
Добрый день,
есть 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);
		}
		************
		
    }
 
}

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

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


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

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

Добавлено: 07 янв 2014, 16:09
apollox
Спасибо, буду разбираться.