Зачем использовать службу android?
Мне интересно, какой смысл использовать службу android для выполнения фоновой работы, когда вам нужно делать много всего, чтобы получить доступ к каким-либо общедоступным методам или получить большой кусок данных из службы, такой как более крупный объект List.
почему бы просто не использовать простой POJO, который делает материал в фоновом режиме для вас в отдельном потоке, если вам нравится, и получить доступ к его общедоступным методам без создания интерфейсов с использованием AIDL, привязки к сервису и т.д.?
Кажется, много работы нужно сделать для доступа к методу из класса обслуживания или это действительно не точка класса обслуживания в android?
Я разработал класс службы android, который получает 100 элементов в структуре xml от веб-службы, которые затем обрабатывают его в POJO, который затем сохраняется в списке, но мне трудно найти способ отправить этот список назад к активности, называемой этой службой.
Я читал об использовании объектов parcebales, но вместе со всеми намерениями .putExtra имеют ограничения по размеру, поэтому я могу столкнуться с проблемами в будущем.
Я подумываю о канаве Android-сервисов, и я быстро узнал, почему я не люблю использовать их в первую очередь: (
простой SomeBackgroundPojo backroundTask = new SomeBackgroundPojo(); backgroundTask.getData();
Кажется soooo намного проще, чем иметь дело с parcelables, serealizable objects, AIDL, bind etcc и т.д. все просто для достижения двух строк кода, которые я только что напечатал выше: (
Ответы
Ответ 1
Nitpick: объект с заданной фоновым заданием не точно, что обычно подразумевается простой старый объект Java.
Если вам все равно, что происходит с выполняемой работой, если ее запрашивающая активность или приложение закрыты, то непременно избегайте сервисов. Одним из основных моментов Сервисов является то, что они могут оставаться в живых, когда пользователь переходит от Activity: если вы выполняете только работу по заполнению пользовательского интерфейса ListView
, всеми способами используйте, например, AsyncTask, как обсуждается в этом более раннем вопросе.