这是使用AsyncTask类的简单计数器:
static private class AsyncTaskRunner extends AsyncTask<Integer, Integer, Integer> {
@Override
protected Integer doInBackground(Integer...prams) {
while(t){
i++;
publishProgress(i);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(Integer result) {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
Textview.setText(String.valueOf(values[0]));
}
}
我是一个整数女巫,每0.2秒上升一次,它的值在Textview中显示。所以当我运行我的应用程序时,我的值在textview中显示,并使用asynctask类快速增加和更新。这是我的问题:为什么有时我的“文本”视图显示较小的i值,例如,在54之后显示53,然后再次上升!
onProgressUpdate(Progress ...),在调用publishProgress(Progress ...)之后在UI线程上调用。执行的时间是不确定的。此方法用于在后台计算仍在执行时在用户界面中显示任何形式的进度。例如,它可用于为进度栏设置动画或在文本字段中显示日志。
无法保证UI线程上更新的时间,因此您可以看到事件按照您的描述乱序进行。您可能想在进度中添加逻辑,以使根本不减少该值,而仅增加该值,如果该值小于上次看到的值,则基本上跳过该值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句