Синглтон Android между сервисом и действиями

Я работаю над проектом, который. Он будет подключаться к удаленному хосту, используя сокеты tcp из службы. И взаимодействовать с ним для получения и отправки данных.

Поток, который я запланировал, таков;

одноэлементный класс сокета. Что возвращает ссылку на подключенный сокет;

действие, чтобы запросить у пользователя IP-адрес и порт удаленного сервера. служба, запущенная (намерение) действием с параметрами ip:port. service получит сокет, используя класс одноэлементного сокета. и тогда сервис прочитает данные; проанализируйте его и покажите пользователю действия пользователя в новом окне действий ( предназначенное). после того, как пользователь завершил действие; результат будет отправлен на сервер. и новый запрос будет прочитан.

проблема/запрос здесь;

  • когда вы возвращаетесь к сервису для второй операции чтения данных; розетка будет? (или сбор мусора), потому что после начала операции чтения данных новое соединение не принимается.

  • умрет ли первая служба после вызова активности действий пользователя?

  • что произойдет, если я вызову службу с помощью startService из действия, созданной новой службы или существующей до запуска службы, вызванной снова?

  • как я могу позволить службе жить вечно, если я не сказал ей умереть.

Извините, если задаю глупые вопросы.


person Olgun Kaya    schedule 13.12.2011    source источник
comment
Почему вы хотите воспользоваться услугой? Рассматривали ли вы вместо этого использование AsyncTask?   -  person kaspermoerch    schedule 13.12.2011
comment
к сожалению, это мой проект назначения, и я должен использовать службы.   -  person Olgun Kaya    schedule 13.12.2011


Ответы (1)


Вот как я это вижу:

когда вы возвращаетесь к сервису для второй операции чтения данных; розетка будет? (или сбор мусора), потому что после начала операции чтения данных новое соединение не принимается.

Если объект является статическим и имеет сокет в качестве переменной-члена, он, скорее всего, будет там, вы должны иметь меры безопасности в своем едином шаблоне, чтобы защититься от этой проблемы (if single==null){...}, вы также можете попробовать управлять им, переопределив класс Application и добавив фабрику метод там. Вы должны убедиться, что сокет открыт и закрыт правильно, а не просто висит, так как это может создать проблемы.

РЕДАКТИРОВАТЬ:

Открыт ли фактический сокет, зависит от времени ожидания сокета.

умрет ли первая служба после вызова активности действий пользователя?

Службам нужно сказать, чтобы они остановились, чтобы они не умерли

что произойдет, если я вызову службу с помощью startService из действия, созданной новой службы или существующей до запуска службы, вызванной снова?

Если служба запущена, она не будет создавать другую, она вызовет onStartCommand() работающей службы.

как я могу позволить службе жить вечно, если я не сказал ей умереть.

Это поведение по умолчанию

person rogermushroom    schedule 13.12.2011
comment
Я уже использую одноэлементное использование нулевой проверки, которое вы предлагаете. И моя ошибка не читать страницу сервиса со страницы разработчиков. developer.android.com/reference/android/app/Service.html Раздел: Жизненный цикл службы спасибо, я постараюсь ответить быстрее!! - person Olgun Kaya; 13.12.2011
comment
Нет проблем, все еще разумный вопрос, если ответ правильный, пожалуйста, отметьте его как таковой. - person rogermushroom; 13.12.2011