我不知道使用Threads是否是我要达到的目的,因此请随时在所需的地方修改代码。
我正在尝试在我的应用程序中实现一个功能,其中TextView
切换为1值,然后每5秒恢复为初始值。我已经在线程上使用以下代码:
layoutDate.setText(firstNumber);
Thread numberSwitch = new Thread() {
@Override
public void run() {
while(!isInterrupted()) {
try {
Thread.sleep(5000);
runOnUiThread(new Runnable () {
@Override
public void run() {
layoutDate.setText(secondNumber);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
numberSwitch.start();
我试过在
layoutDate.setText(firstNumber)
之后和嵌套的runUiOnThread
之后添加run
,但是它仍然无法按我的意愿工作。我想要实现以下目标:
最佳答案
您可以将Handler与可运行对象一起使用。
private TextView textView;
private Handler handler;
在您的
onCreate()
中textView = findViewById(R.id.tv_bt_msg);
textView.setText("secondNumber");
handler = new Handler();
//Change the textview after 5 seconds
handler.postDelayed(runnable, 5000);
可运行每5秒更改一次文本
private Runnable runnable = new Runnable() {
@Override
public void run() {
String currentString = textView.getText().toString();
if(currentString.equals("secondNumber")){
currentString = "firstNumber";
}else{
currentString = "secondNumber";
}
final String tempString = currentString;
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(tempString);
}
});
//Change the textview again after 5 seconds
handler.postDelayed(runnable, 5000);
}
};
使用它来删除回调
handler.removeCallbacks(runnable);