Android: несколько с AsyncTask - PullRequest
       16

Android: несколько с AsyncTask

1 голос
/ 24 июля 2011

Я изучаю 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 миллисекунд), мне нужно сделать еще больше подклассов ... true?

Или есть какой-то способ сделать несколько потоковстрельба в разное время, используя только этот один подкласс?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 24 июля 2011

тогда мне нужно сделать еще больше подклассов ... true?

Не верно.

Вы можете просто выполнить тот же AsyncTask снова, создавnew AddStringTask() экземпляр.Это работает, так как это будет новый экземпляр, который отличается от других, и каждый экземпляр имеет свой собственный поток. Они не являются взаимозависимыми .

Однако механизм таймера - это то, что вы должны реализовать самостоятельно.

1 голос
/ 24 июля 2011

Вы также можете использовать тот же 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]);
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...