繁体   English   中英

Java和Android的线程问题

[英]Threading Problem with Java and 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上。 对于我的问题,不必了解它。 起初它没有用,logcat说我无法在该线程中未创建的视图层次结构上触摸视图。 我不确定这是什么意思,所以我做了

image.post(...)

码。 哪个有效。 我的主要问题是:为什么要这样做? 如果看上面的代码,第一个showPicture()方法不在image.post()代码内。 但没有例外。 我不明白,为什么不需要帖子? 还有为什么我需要发布,因为Image是一个类变量,并且我认为可以被所有线程查看。 我很高兴它奏效,但感到困惑。

请记住,这是我首次尝试在Java线程上进行琐碎的教科书示例以外的操作。 所以我还是很困惑。

顺便说一句,最后我放弃了整个线程,只是做了

new Thread(new Runnable() {
            public void run() {...}

使用GUI进行“操作”时,您应该始终在GUI线程上。 这就是View.post(Runnable)所做的,确保gui线程完成了runnable的工作。

即使您的showImage可以运行一次,也并不意味着它总是可以运行...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM