Я разрабатываю приложение, которое просматривает серию фотографий, например, пролистывая фотоальбом. Довольно стандартный материал, я уверен. Поскольку изображение должно быть просмотрено в течение нескольких секунд, прежде чем оно автоматически изменится на следующем рисунке, я решил использовать ake поток, который показывает изображение, ждет пару секунд, а затем переходит.Проблема Threading с Java и Android
Picthread(ImageView Image1) {
this.image = Image1;
}
public void run(){
showPicture(image);
animal_array = new String[7];
while (counter < 7){
try{
int timer = 0;
while (timer < 2000){
sleep(500);
timer+=500;
}
image.post(new Runnable(){
public void run() {
showPicture(image);
}
});
}
catch (InterruptedException e) {
}
}
}
Это актуальное состояние. showPictures - очень простой метод, который просто выбирает изображение и помещает его в ImageView. Это не обязательно знать о моей проблеме. Вначале itdidn't work, logcat сказал, что я не мог дотронуться до представления на представлении heirarchy, которое не было создано в этой теме. Я не был уверен, что это значит, поэтому я сделал
image.post(...)
код. Это сработало. Мой главный вопрос: почему это было необходимо? Если вы посмотрите на мой код выше, первый метод showPicture() не находится внутри кода image.post(). Но никаких исключений не зарегистрировано. Я не понимаю этого, почему не нужно писать? Но также почему мне нужно публиковать, так как Image - это переменная класса, и я думал, что можно просмотреть все потоки. Я был счастлив, что это сработало, но озадачено.
Пожалуйста, обратите внимание, что это моя первая попытка нарезания резьбы на Java на чем-то более, чем тривиальные примеры учебников. Я все еще довольно смущен.
Кстати, в конце концов, я угробил всю нить, и просто сделал
new Thread(new Runnable() {
public void run() {...}
Спасибо за ответ. Хорошо, но почему showPicture работал один раз без post()? Кроме того, должен ли я никогда не определять внутренний поток класса для приложения GUI? – 2010-11-17 16:01:08
@JJG, хорошо что показываетImage do (код)? – dacwe