Java 来自处理程序的安全UI更新
我在Java 来自处理程序的安全UI更新,java,android,Java,Android,我在headfirst Android Development一书中找到了包含UI用法的示例代码,它不是来自主线程 根据我的理解,run(){}的内容在单独的线程中运行。和linedistanceView.setText(distancester)正在尝试使用主线程不允许的UI。我错了 private void displayDistance() { final TextView distanceView = (TextView) findViewById(R.id.di
headfirst Android Development
一书中找到了包含UI用法的示例代码,它不是来自主线程
根据我的理解,run(){}
的内容在单独的线程中运行。和linedistanceView.setText(distancester)代码>正在尝试使用主线程不允许的UI。我错了
private void displayDistance()
{
final TextView distanceView = (TextView) findViewById(R.id.distance);
final Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run()
{
double distance = 0.0;
if (bound && odometer != null) {
distance = odometer.getDistance();
}
String distanceStr = String.format(Locale.getDefault(),"%1$,.2f miles", distance);
distanceView.setText(distanceStr);
handler.postDelayed(this, 1000);
}
});
}
根据:
默认构造函数将此处理程序与当前线程的活套
相关联
因此,只要在主线程上调用displaydestance()
,处理程序就会在运行传递给它的任何Runnable
时使用主线程