Size: a a a

Android Developers

2020 August 06

DU

Dmitry Upovalov in Android Developers
это легко проверить, добавив в первый лог вывод Thread.currentThread.getName()
источник

ВО

Виктор Орехов... in Android Developers
Dmitry Upovalov
это легко проверить, добавив в первый лог вывод Thread.currentThread.getName()
1ый запрос выводит "main"
2ой запрос выводит "AsyncTask #2"
Почему оно не main во второй раз?
источник

S

Sergey S. in Android Developers
Виктор Орехов
1ый запрос выводит "main"
2ой запрос выводит "AsyncTask #2"
Почему оно не main во второй раз?
Код показать можешь?
источник

S

Sergey S. in Android Developers
Метод doInbackground работает НЕ в main потоке. Остальные в main. https://developer.android.com/reference/android/os/AsyncTask#the-4-steps
источник

ВО

Виктор Орехов... in Android Developers
Sergey S.
Код показать можешь?
Слишком много кода, если смогу как то сократить и подвинуть — кину
источник

ВО

Виктор Орехов... in Android Developers
Sergey S.
Метод doInbackground работает НЕ в main потоке. Остальные в main. https://developer.android.com/reference/android/os/AsyncTask#the-4-steps
Да, я знаю. вот когда оказывается в коде ошибка, срабатывает catch блок и вызывается cancel(true). Почему оно во втором случае не заканчивает асинктаск — хз. В первом все работает
источник

S

Sergey S. in Android Developers
Замени Jsonexception на exception и залогируй ошибку. Все тайное станет ясным
источник

ВО

Виктор Орехов... in Android Developers
Sergey S.
Замени Jsonexception на exception и залогируй ошибку. Все тайное станет ясным
там ошибка с жсоном, которую я специально сделал, чтобы протестить возможный сценарий. Протестил...
источник

S

Sergey S. in Android Developers
Виктор Орехов
там ошибка с жсоном, которую я специально сделал, чтобы протестить возможный сценарий. Протестил...
А если другая?
источник

ВО

Виктор Орехов... in Android Developers
Sergey S.
А если другая?
Только что проверил
источник

S

Sergey S. in Android Developers
Попробуй поменять местами cancel (true) и listener
источник

S

Sergey S. in Android Developers
Я б переделал бы немного. Делаешь объект, который будет содержать ошибку или результат. Далее проверяешь и отображает то, что надо
источник

ВО

Виктор Орехов... in Android Developers
Sergey S.
Попробуй поменять местами cancel (true) и listener
Пробовал, ругается

Caused by: java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare()
источник

S

Sergey S. in Android Developers
Насколько понял, листенер вызывает показ тоста. А работа с UI только с main потока
источник

ВО

Виктор Орехов... in Android Developers
Sergey S.
Насколько понял, листенер вызывает показ тоста. А работа с UI только с main потока
Да, только вся проблема в том, что при первом асинктаске оно покажет тост (покажет, что название потока main в этом месте https://t.me/android_ru/755569), а со второго уже не показывает тост, потому что название потока "AsyncTask #2"
источник

S

Sergey S. in Android Developers
Sergey S.
Я б переделал бы немного. Делаешь объект, который будет содержать ошибку или результат. Далее проверяешь и отображает то, что надо
В onPostExcecute проверь созданный объект на наличие ошибки или результата и отображай
источник

DU

Dmitry Upovalov in Android Developers
Sergey S.
В onPostExcecute проверь созданный объект на наличие ошибки или результата и отображай
какой onPosExecute после cancel?
источник

S

Sergey S. in Android Developers
Dmitry Upovalov
какой onPosExecute после cancel?
Ну эт тоже убрать)
источник

DU

Dmitry Upovalov in Android Developers
нужно больше кода. в текущем видны непонятные сущности вроде листенера
источник

DU

Dmitry Upovalov in Android Developers
как эта таска связана с показом ошибок из приведенного кода не видно
источник