Когда вы запускаете AsyncTask, вызывается doInBackground
, но он запускается только один раз. Я не уверен, что делает readMJPGStream
, но при условии, что он блокируется до тех пор, пока изображение не будет получено, вполне возможно, что onProgressUpdate будет вызываться несколько раз, пока ваше изображение все еще равно нулю, а затем, когда для изображения установлено значение, допустимое и doInbackground быстро завершается, больше нет звонков на OnProgressUpdate
.
Вы, вероятно, должны поместить вызов imView.setImageDrawable
в onPostExecute
, чтобы убедиться, что он вызывается при загрузке изображения. Вам также может понадобиться вызвать invalidate()
в вашем изображении, чтобы убедиться, что оно перерисовывается. Кроме того, если вы собираетесь зациклить и продолжить загрузку изображений, вам нужно будет разработать механизм запуска обновлений. В действительности проблема заключается в том, что вы хотите, чтобы «по требованию» входило в поток пользовательского интерфейса, но вы зависите от вызовов на onProgressUpdate
. Вам бы повезло больше, используя Handler и ваш собственный Runnable / Thread, потому что тогда, когда загрузка изображения завершится, вы сможете публиковать сообщения в потоке пользовательского интерфейса (используя Handler
), не дожидаясь onProgressUpdate
.