Я встречаюсь с проблемой, чтобы понять, что является лучшим решением для того, что я хочу делать. (И у меня проблемы с пониманием того, как они работают точно)Android: IntentService или обработчик
Часто я использую Asynctask, но в этом случае я думаю, что это не то, что мне нужно.
В действии (A) Я хочу запустить задачу, которая отправляет данные в WS, и это может занять 10-20 секунд. Я хочу разрешить пользователю делать что-то еще в приложении за это время.
Когда эта задача выполнена, я хочу вызвать другое действие, но если есть ошибки, я хочу показать их в тосте. Я тоже хочу показать индикатор прогресса, если пользователь находится в этом действии (A).
Таким образом, я вижу, что IntentService может мне помочь, потому что он не «связан» с активностью, он работает в фоновом режиме и т. Д., Но, похоже, немного сложно связать с потоком пользовательского интерфейса. (в моем случае, если есть проблема, я хочу что-то сделать в своей деятельности A).
Другая часть, обработчик может использоваться, но если действие уничтожено, поток работает всегда, но как я могу «восстановить» ссылку с активностью, если пользователи возвращаются к активности (A)? (со статическим классом, чтобы сохранить его?).
Так что если у вас есть какие-либо ссылки/посоветуйте/другие, чтобы дать мне больше объяснений, я буду признателен :) (я в доке прочитанных Android.)
Thx за вашу помощь :) Первый вопрос, почему IntentService лучше, чем обработчик для этого случая? Потому что кажется, может быть, легче что-то сделать с обработчиком? – deveLost
IntentService имеет немного больше шаблонов, я признаю, но у него есть свой жизненный цикл и контекст, поэтому он менее подвержен ошибкам. Также главное преимущество IntentSevice заключается в том, что вы можете увольнять столько, сколько пожелаете ваше сердце, но оно будет работать только по одному! Это означает, что вам даже не нужно беспокоиться о том, сколько потоков у вас открыто и т. Д. – JoeyJubb
Хорошо, я понимаю!Я собираюсь попробовать это, посмотрю, я вернусь, если у меня возникнут проблемы: D – deveLost