亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何讓 for 循環在每次迭代中等待?

如何讓 for 循環在每次迭代中等待?

搖曳的薔薇 2023-09-20 19:05:10
我試圖在應用程序中使用線程的每個 for 循環之后等待,但我遇到了問題。當 URL 中的電影正在播放時,必須執行這個 for 循環,但是......不幸的是,循環是在暫停的情況下執行的,我將其放入代碼中,后來影片以更新的文本開始。這應該同時開始。for 循環和電影。電影放映過程中,文字應該不斷更新。注意:我縮短了 ArrayList 字典以使代碼更容易理解。注意2:應用程序嘗試從 URL 打開視頻文件,但它給我一條消息:W/MediaPlayer:無法打開(視頻 URL):java.io.FileNotFoundException:沒有內容提供程序:(視頻 URL)。編輯:我正在為您放置整個班級代碼。帶有構造函數的 Translations.java 類。public class Translations {    private String polishWord;    private String englishWord;    public Translations(){    }    public Translations(String mPolishWord,String mEnglishWord){        polishWord = mPolishWord;        englishWord = mEnglishWord;    }    public String getPolishWord() {        return polishWord;    }    public void setPolishWord(String polishWord) {        this.polishWord = polishWord;    }    public String getEnglishWord() {        return englishWord;    }    public void setEnglishWord(String englishWord) {        this.englishWord = englishWord;    }}
查看完整描述

2 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

我找到了解決辦法。問題是我試圖讓處理程序中的線程休眠。JVM 認為應該暫停主線程,而不是“t”線程。我將 Thread.sleep() 方法移至 run() 以及 for 循環。我只在處理程序中留下 switch() 來更改 UI?,F在就可以了。


        final Handler h = new Handler() {


            @Override

            public void handleMessage(@NonNull Message msg) {


               Translations x = dict.get(i-1);

                        switch (j) {

                            case 1: {

                                Log.d(TAG, "First word translated");

                                englishTrans1.setText(x.getEnglishWord());

                                polishTrans1.setText(x.getPolishWord());

                                break;

                            }

                            case 2: {

                                Log.d(TAG, "Second word translated");

                                englishTrans2.setText(x.getEnglishWord());

                                polishTrans2.setText(x.getPolishWord());

                                break;

                            }

                            case 3: {

                                Log.d(TAG, "Third word translated");

                                englishTrans3.setText(x.getEnglishWord());

                                polishTrans3.setText(x.getPolishWord());

                                break;

                            }


                        }


                }



            };



        Runnable r = new Runnable() {

            @Override

            public void run() {


                for(i = 0;i<dict.size();i++) {


                    try {

                        Thread.sleep(2000);


                    }catch (InterruptedException e){

                    }


                    if (j < 3) {

                        j++;

                    } else {

                        j = 1;

                    }

                    h.sendEmptyMessage(0);

                }



            }

        };


        Thread t = new Thread(r);

        t.start();




    }

}


查看完整回答
反對 回復 2023-09-20
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

為什么要循環,代碼片段正在執行的“字幕”鏈接到視頻。如果用戶擦洗影片并快進或快退會怎樣?大多數字幕設置都會在屏幕上顯示與影片時間碼相關聯的句子,因此您可以在播放視頻上的時間碼發生變化時觸發字幕,并傳入時間碼,這樣它將獲取視頻該部分的句子并將其顯示在屏幕上。



查看完整回答
反對 回復 2023-09-20
  • 2 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號