我正在设计一个应用程序,它可以浏览一系列图片,就像浏览相册一样。很标准的东西我敢肯定。由于图片必须先查看几秒钟才能自动更改为下一张图片,所以我决定创建一个显示图片的线程,等待几秒钟然后继续。
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 上。对于我的问题,没有必要知道它。起初它不起作用,logcat 说我无法触摸不是在此线程中创建的视图层次结构上的视图。我不确定这意味着什么,所以我做了
image.post(...)
代码。哪个有效。我的主要问题是:为什么这是必要的?如果你看我上面的代码,第一个 showPicture() 方法不在 image.post() 代码中。但没有注册例外。没看懂,为什么不需要发帖?而且为什么我需要发布,因为 Image 是一个类变量,我认为可以被所有线程查看。我很高兴它成功了,但很困惑。
请记住,这是我第一次尝试在 Java 中进行线程化,而不是简单的教科书示例。所以我还是很困惑。
顺便说一句,最后我放弃了整个线程,只是做了
new Thread(new Runnable() {
public void run() {...}