2015-01-11 4 views
0

Я посмотрел на другие вопросы, и я не смог прояснить мои сомнения, чтобы вызвать задачу с другой задачей, у меня есть следующий код:Невозможно вызвать AsyncTask из другого AsyncTask

protected List<Plan> doInBackground(String... params) 
    try { 
     JSONParsePlans parseJSON = new JSONParsePlans(); 
     return parseJSON.execute(params[0], params[1], params[2]).get(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
     return null; 
    } catch (ExecutionExeption e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

parseJSON является задача, когда я запускаю программу, ничего не делает, даже не вызывает задачу, это похоже на то, что Android опустил для обеспечения безопасности.

ответ

1

В соответствии с этим StackOverflow Post:

, но только внутри onProgressUpdate() или onPostExecute(), так как эти методы работают в потоке пользовательского интерфейса. Поэтому запустите вторую AsyncTask в потоке пользовательского интерфейса, выбрав один из двух методов, перечисленных выше.

Таким образом, вы можете вызвать AsyncTask из другого AsyncTask, если он работает в любом из этих двух методов.

Существует также еще один пост StackOverflow, который решает эту проблему here

1

можно назвать Async задачу из другого Асинхронный Task

но только внутри onProgressUpdate() или onPostExecute()

Причина -, так как эти методы работают по потоку пользовательского интерфейса. Поэтому запустите вторую AsyncTask в потоке пользовательского интерфейса, выбрав один из двух методов, перечисленных выше.

Смежные вопросы