我正在通过一本书学习Android,只是想确认一些事情。
当使用AsyncTask根据书它是这样的:
main class
{
new AddStringTask().execute();
}
class AddStringTask extends AsyncTask<Void, String, Void> {
@Override
protected Void doInBackground(Void... unused) {
// Do something
SystemClock.sleep(333);
return(something);
}
@Override
protected void onProgressUpdate(String... item) {
// update something
}
}
创建一个后台线程来做一些事情。因此,如果我想要更多的线程,例如在不同的时间(300、500、1000毫秒)触发,那么我需要来创建更多的子类…真的吗?
或者有一些方法来做多个线程在不同的时间使用这一个子类?
谢谢!
那么我需要创建更多的子类…真的吗?
不是真的。
您可以通过创建new AddStringTask()
实例再次执行相同的AsyncTask
。这是有效的,因为它将是一个不同于其他实例的新实例,每个实例都有自己的线程。它们不是相互依赖的。
然而,计时器机制是你必须自己实现的。
您还可以使用相同的AsyncTask并从同一线程发布不同的进度。比如:
protected Void doInBackground(Void... unused) {
...
System.sleep(500);
publishProgress(x);
System.sleep(500);
pulbishProgress(y);
}
和
protected void onProgressUpdate(String... progress) {
myLabel.setText(progress[0]);
}