ScheduledThreadPoolExecutor在Android上不起作用.为什么



我是android开发的新手,我正在努力找出为什么这不起作用。我在Eclipse上运行了这个想法,它运行得很好。但我无法让它在我的任何设备上工作。应用程序在启动时显示值,但不再刷新值。

public class MainActivity extends AppCompatActivity {
private TextView txtCrono;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.txtCrono = (TextView) findViewById(R.id.txtTiempo); //activity_main TextView
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);

exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
txtCrono.setText(String.valueOf(System.currentTimeMillis()));
}
}, 0, 100, TimeUnit.MILLISECONDS);
}
}

尝试使用runOnUIThread:

exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
txtCrono.setText(String.valueOf(System.currentTimeMillis()));
}
});
}
}, 0, 100, TimeUnit.MILLISECONDS);

基本上,您必须从主UI线程访问视图。(我不知道为什么你的代码没有引起错误,并且第一个可运行程序成功地setText。也许只有第一个可执行程序在主UI线程上执行。(

最新更新