2010-05-08 4 views
3

У меня есть три одновременных экземпляра AsyncTask для загрузки трех файлов. Когда заканчиваются два конкретных, в конце onPostExecute() я проверяю флаг, установленный каждым, и если оба они истинны, я вызываю startActivity() для следующего действия.Такая же деятельность называется дважды ... Проблема с несколькими асинхронными задачами?

В настоящее время я вижу деятельность, называемую дважды, или что-то похожее на этот тип поведения. Так как экран делает этот «переходный» переход к следующему действию, он иногда делает это дважды (и когда я ударяю назад, он возвращается к той же активности). Очевидно, две версии активности, которые СЛЕДУЕТ, только вызываются один раз, помещаются в стек активности.

Может ли это быть одновременно выполняемым как onPostExecute() s, так и одновременно проверять флаги друг друга в одно и то же время? Это кажется крайне маловероятным, так как два процесса должны выполняться по очереди параллельно ...

***** EDIT *** Из этого вопроса многое ушло, поскольку я был вдали от того, что думал был неправ. Тем не менее я нашел ответ здесь весьма полезным, поэтому я отредактировал вопрос, чтобы отразить полезные части.

ответ

1

Единственный способ, которым я могу найти, что это возможно, если обоих AsyncTasks' onPostExecute() выполняется SO одновременно, что они были практически под управлением той же линии в то же время, так как я установил флаг «itemXdownloaded» равен true , прежде чем я проверю оба и назову startActivity().

Поскольку оба они вызваны в основной поток приложений, это невозможно, если только вы не делаете что-то действительно странное.

Я бы ввел некоторые Log звонки, чтобы убедиться, что вы не неправильно понимаете симптомы.

Кроме того, трудно обнаружить какие-либо проблемы из вашего псевдокода, если нет возможности других значений downloadID за пределами трех указанных. Например, если есть DL4, а DL4, выполненный после DL1 и DL2, DL4 активирует вашу деятельность.

+0

А, вы правы в отношении основной темы приложения. Не думал об этом. Поэтому он должен * быть логической проблемой где-то ... Спасибо. – stormin986

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