簡體   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