Какой смысле использовать Observable и Observer Если есть AsyncTask. Там тоже есть конечный метод, промежуточный и метод перед запуском класса...
Дело в том, что Observer
и AsyncTask
выполняют совершенно разные задачи и никакой речи о их взаимозаменяемости не идет, хотя бы у них обоих и есть какие то методы для действий в начале, в процессе выполнения и при завершении операции.
AsyncTask
- это класс-обертка из фреймворка Android, предназначенный для выполнения параллельных операций в другом потоке, с возможностью взаимодействия с основным потоком.
Observer
(наблюдатель) - это поведенческий паттерн проектирования, предназначенный для уведомления о изменении состояния в наблюдаемом объекте (например изменились данные и их нужно обработать). При этом инициатором сигнала является сам наблюдаемый объект, а классы, подписанные на уведомления от наблюдаемого объекта получат этот сигнал.
В фреймворке Android ближе к Observer
по принципу действия находится BroadcastReceiver
(широковещательные сообщения) - данный класс реализует поведенческий паттерн проектирования издатель-подписчик.
Разница между ними в моменте подачи сигнала ( вообще бродкаст это улучшенный обсервер). Если Observer
реагирует на изменение состояния наблюдаемого объекта и связан с ним, то Broadcast
может извещать о чем угодно - это рассылка сообщений в эфир всем заинтересованным в этой рассылке.
Отвлеченно, на живых примерах, AsyncTask
можно сравнить с многополосной дорогой - у нас много груза и мы можем отправлять грузовики одновременно по нескольким полосам, чтобы быстрее доставить весь груз.
Observer
с сигнализацией в машине. Сама сигнализация это Observer машины, вы - Observable, подписчик на события сигналки через брелок от нее. Когда состояние машины изменяется (кто то пытается ее прибрать себе) вы получаете уведомление об этом печальном событии и можете действовать, спасая свое добро.
Broadcast
- с радиостанцией. Ни кто иной, а сам президент нашей Родины, придумал очень важный указ, его зачитали по радио и тогда заинтересованные лица тут же смогли исполнять указания, так как они все время слушают это радио.
Как видите, все они имеют свои особенные функции и каким то образом не могут заменять друг друга, особенно дорога и сигнализация :)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В потоке run() строка: clientSocketgetOutputStream()
Почему невозможно найти log4j2 файл конфигурации хотя файл добавленПути файла менял на различные, все равно не находит