gpt4 book ai didi

java - Android:在其他线程中操作UI控件,但是

转载 作者:行者123 更新时间:2023-12-01 15:15:29 25 4
gpt4 key购买 nike

beginButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
PlayThread playThread = new PlayThread();
Thread thread = new Thread(playThread);

thread.start();
}
});

public class PlayThread implements Runnable {
@Override
public void run() {
beginButton.setClickable(false);
pauseButton.setClickable(true);
messageBool = true;
int maxProgressBar = playProgressBar.getMax();
int currentInt = playProgressBar.getProgress();

for(; currentInt <= maxProgressBar; ++currentInt)
{
if(messageBool == false)
{
break;
}
playProgressBar.incrementProgressBy(1);
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

if(currentInt > maxProgressBar)
{
playProgressBar.setProgress(0);
beginButton.setClickable(true);
pauseButton.setClickable(false);
}
}
};

大家好。这段代码有什么问题吗?我知道我们不能在除UI线程之外的其他线程中操作UI的控件。但是这段代码运行OK。那么有什么问题或者我错过了什么吗?提前致谢!

最佳答案

如果您不以需要在屏幕上重新绘制的方式修改View,那么您就是安全的。 setClickable 仅修改其属性之一,例如,如果您要设置文本或修改该 ViewLayoutParams,该操作将使 View 无效,将会出现可怕的异常 Touched from the error thread...etc

ProgressBar 是线程安全的,可以在任何线程中使用。

关于java - Android:在其他线程中操作UI控件,但是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11662254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com