Android: Multiple with AsyncTask



我正在通过一本书学习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]);
     }

最新更新