Android 处理程序/Runnable不使用循环
我试图让我的TextView在一个单独的线程中更新,这样它就不会减慢我的UI。它可以工作,但当我添加一个while循环来控制它时,它会将程序挂起在黑屏上 代码:Android 处理程序/Runnable不使用循环,android,multithreading,while-loop,handler,Android,Multithreading,While Loop,Handler,我试图让我的TextView在一个单独的线程中更新,这样它就不会减慢我的UI。它可以工作,但当我添加一个while循环来控制它时,它会将程序挂起在黑屏上 代码: 我认为runnable会创建一个新线程,这意味着不会发生这种情况?还是我出了大错?您的黑屏是因为您在事件调度线程上运行任意持续时间的while循环:永远不要这样做。对于此类内容,您希望使用AsyncTask或在单独的线程中启动Runnable,然后使用View.post仅发送计时器更新。使用如下类: // Function argume
我认为runnable会创建一个新线程,这意味着不会发生这种情况?还是我出了大错?您的黑屏是因为您在事件调度线程上运行任意持续时间的while循环:永远不要这样做。对于此类内容,您希望使用AsyncTask或在单独的线程中启动Runnable,然后使用View.post仅发送计时器更新。使用如下类:
// Function arguments are in milliseconds.
CountDownTimer timer = new CountDownTimer(6000, 1000) {
public void onTick(long millisUntilFinished) {
//mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
// Do your stuff here.
TextView myText = (TextView)findViewById(R.id.timerT);
myText.setText(getTimeString(media[1].getCurrentPosition()));
}
public void onFinish() {
mTextField.setText("done!");
}
}
timer.start();
当您使用
处理程序发布Runnable
时,它将在主线程上执行<代码>可运行
只是一个接口。。。它不包含除实现时编写的代码以外的任何隐藏代码。
// Function arguments are in milliseconds.
CountDownTimer timer = new CountDownTimer(6000, 1000) {
public void onTick(long millisUntilFinished) {
//mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
// Do your stuff here.
TextView myText = (TextView)findViewById(R.id.timerT);
myText.setText(getTimeString(media[1].getCurrentPosition()));
}
public void onFinish() {
mTextField.setText("done!");
}
}
timer.start();