gpt4 book ai didi

java - 安卓编程: How do I get out of a while loop?

转载 作者:搜寻专家 更新时间:2023-11-01 07:59:44 25 4
gpt4 key购买 nike

我的程序应该重复一个方法,直到按下一个按钮。我试过这个,但不起作用:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new TextToSpeech(this, this);
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}


public void onClick (View v){
switch(v.getId()) {
case R.id.button1:
mainprogram();
break;
case R.id.button2:
perform = false;
break;
}
}



public void mainprogram(){

while(perform == true){
speak();
}
}

(当然我编写了“speak()”方法)

请问是哪里出了问题,有什么方法可以解决吗?

最佳答案

问题是您的循环在 UI 线程上运行。我想当您开始循环时整个 UI 会卡住。

您应该在单独的线程上运行它。喜欢:

case R.id.button1: 
Thread th = new Thread(new Runnable(){
public void run(){
mainprogram()
}
}).start();
break;

此外,由于您从单独的线程修改“perform”,您还应该使 perform 变量可变,以便在修改发生后立即对其他线程可见更改。

您可以在此处阅读有关 volatile 的更多信息: Do you ever use the volatile keyword in Java?

关于java - 安卓编程: How do I get out of a while loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22786203/

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