Нашел у себя приложение для Android, которое писал около года назад. Выкладываю часть кода с реализацией обновления картинки по таймеру средствами android.os.Handler.
android.os.Handler
-----------------------------------------------------------------
-----------------------------------------------------------------
import android.os.Handler;
...
public class ShowPicture extends Activity implements OnClickListener {
...
private int refreshTime; // время обновления в миллисекундах
private ImageView imageView; // android.widget.ImageView
...
private Runnable slideshow = new Runnable() // реализуем интерфейс Runnable для последующего вызова в postDelayed
{
public void run()
{
showPicture(imageView); // отображение картинки
handl.postDelayed(this, refreshTime); // запустить то же самое через refreshTime миллисекунд
}
};
public void onClick(View v)
{
switch (v.getId())
{
case R.id.start_button:
handl.removeCallbacks(slideshow); // фактически очищаем очередь, в которую помещаем отложенные вызовы методом Handler.postDelayed. Также этот вызов размещается в onStop(), onPause()...
handl.postDelayed(slideshow, 50); // при нажатии кнопки Start, через 50 миллисекунд в новом потоке запустится отображение картинки
break;
case R.id.stop_button:
handl.removeCallbacks(slideshow);
break;
case R.id.video_exit_button:
handl.removeCallbacks(slideshow);
finish();
break;
}
}
}
android.os.Handler
-----------------------------------------------------------------
Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses. |
import android.os.Handler;
...
public class ShowPicture extends Activity implements OnClickListener {
...
private int refreshTime; // время обновления в миллисекундах
private ImageView imageView; // android.widget.ImageView
...
private Runnable slideshow = new Runnable() // реализуем интерфейс Runnable для последующего вызова в postDelayed
{
public void run()
{
showPicture(imageView); // отображение картинки
handl.postDelayed(this, refreshTime); // запустить то же самое через refreshTime миллисекунд
}
};
public void onClick(View v)
{
switch (v.getId())
{
case R.id.start_button:
handl.removeCallbacks(slideshow); // фактически очищаем очередь, в которую помещаем отложенные вызовы методом Handler.postDelayed. Также этот вызов размещается в onStop(), onPause()...
handl.postDelayed(slideshow, 50); // при нажатии кнопки Start, через 50 миллисекунд в новом потоке запустится отображение картинки
break;
case R.id.stop_button:
handl.removeCallbacks(slideshow);
break;
case R.id.video_exit_button:
handl.removeCallbacks(slideshow);
finish();
break;
}
}
}