Привет.
Пишу клиент, который подключается к серверу по сокету и постоянно получает-отправляет сообщения.
Архитектура примерно такая:
при старте приложения запускается сервис, сохраняю его в onCreate в синглтон, в onDestroy удаляю
в сервисе есть сокет и остальная информация для правильной работы с сервером
все сообщения отправляю через этот инстанс сервиса
есть ли решения этой задачи в стиле андроид?
Intent+IntentService = сервис умрет после того, как интент будет обработан и закроет сокет
сервис должен жить всегда, пока живо приложение - биндинг активити не подходит
сокет же должен быть открыт всегда, пока жива сессия (логин - сессия - логаут)
поворот я обрабатываю отпиской от сервера по контексту активити (из кэша колбэков удаляются все колбэки, связанные с контекстом активити)
проблема заключается в транспортировке данных между активити и сервисом (там сокет в отдельном потоке крутится)
а текущий вариант (жесткая связка между активити и сервисом через синглтон) мне кажется неправильной.
думал интенты прикрутить и через них в сериализованном виде передавать колбэк и объект с данными. но тут встает вопрос о возврате результатов: можно через бродкасты, но моя задача оставить в активити только запрос к АПИ с колбэком, без какой-то внутренней логики АПИ.