Вот ситуация: мое приложение имеет одно действие, обрабатывает длительное TCP-соединение и динамически обновляет пользовательский интерфейс с большим количеством вещей (HashTables объектов, кнопок, ArrayLists, адаптеров...). На данный момент я обрабатываю соединение с помощью AsyncTask и ищу способ сохранить:
- связь
- все переменные, такие как динамически создаваемые представления
когда экран поворачивается или пользователь получает вызов, я нашел это: http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html, что мне кажется довольно крутым. Но я также везде читал, что вместо этого я должен использовать службу, потому что это лучше для длительных TCP-соединений. Почему AsyncTask:
- похоже, я могу сохранить TCP-соединение с помощью фрагмента
- Мне все равно придется сделать что-то подобное, чтобы сохранить объекты, кнопки и т. Д. От вращения/вызовов
- У меня есть только одно действие, которое требует подключения (разве сервисы не указаны более чем для одного?)
Почему сервис:
- нет необходимости использовать фрагменты для сохранения TCP-соединения (правильно ли это? какой сервис, обычный, IntentService, поскольку у меня есть только один клиент или ограниченный, я должен использовать для этого?)
- лучше для длительных соединений
Когда я говорю «сервис», я предполагаю, что мне все равно придется запускать AsyncTask внутри сервиса, поэтому он не обрабатывает соединение в основном действии. Что я должен делать?