这个问题通常是由于while循环在UI线程中持续执行而导致的。这样会阻塞UI线程,使界面无响应。为了解决这个问题,可以将while循环放入另一个线程中执行,或者使用Handler来定时执行循环。以下是一个示例代码:
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
while (condition) {
// do something
}
runOnUiThread(new Runnable() {
@Override
public void run() {
// update UI
}
});
}
}).start();
}
});
在这个示例中,我们创建了一个新的线程来执行while循环。当循环完成时,我们使用runOnUiThread方法将UI更新放入UI线程中。这确保了while循环执行时不会阻塞UI线程。