2 回答
TA贡献1805条经验 获得超10个赞
我找到了解决办法。问题是我试图让处理程序中的线程休眠。JVM 认为应该暂停主线程,而不是“t”线程。我将 Thread.sleep() 方法移至 run() 以及 for 循环。我只在处理程序中留下 switch() 来更改 UI。现在就可以了。
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();
}
}
TA贡献1866条经验 获得超5个赞
为什么要循环,代码片段正在执行的“字幕”链接到视频。如果用户擦洗影片并快进或快退会怎样?大多数字幕设置都会在屏幕上显示与影片时间码相关联的句子,因此您可以在播放视频上的时间码发生变化时触发字幕,并传入时间码,这样它将获取视频该部分的句子并将其显示在屏幕上。
添加回答
举报