Android SignalR должен быть реализован как Service или IntentService?

В моем приложении Android я реализую соединение SignalR ( https://github.com/erizet/SignalA ) для подключения к серверу-концентратору для отправки запросов и получения ответов.

Образец моего кода выглядит следующим образом:

signalAConnection = new com.zsoft.SignalA.Connection(Constants.getHubUrl(), this, new LongPollingTransport()) { @Override public void OnError(Exception exception) { } @Override public void OnMessage(String message) { } @Override public void OnStateChanged(StateBase oldState, StateBase newState) { } }; if (signalAConnection != null) signalAConnection.Start(); 

Также есть бит отправки

 signalAConnection.Send(hubMessageJson, new SendCallback() { public void OnError(Exception ex) { } public void OnSent(CharSequence message) { } }); 

Посылка и получение будут происходить в разных действиях, и некоторые ответы будут отправляться в произвольные моменты времени независимо от активности, также следует открывать соединение, пока приложение работает (даже если приложение работает в фоновом режиме), поэтому Я хочу реализовать соединение signalA в качестве фоновой службы

Вопрос в том, должен ли я реализовать его как:

1 – Служба ( http://developer.android.com/reference/android/app/Service.html )

ИЛИ

2 – услуга Intent ( http://developer.android.com/training/run-background-service/create-service.html )

Помня о том, что мне нужно будет отправить строки в службу и получить строки ответа от службы.

Я был бы очень признателен, если бы кто-нибудь покажет мне, как реализовать такое соединение в коде как фоновое обслуживание / intenservice.

Спасибо за прочтение.

ОБНОВИТЬ:

Пожалуйста, ознакомьтесь с этой демонстрационной деятельностью, сделанной разработчиком, как он реализовал SignalA https://github.com/erizet/SignalA/blob/master/Demo/src/com/zsoft/SignalADemo/DemoActivity.java

Проблема заключается в том, что AQuery (о котором я ничего не знаю) используется в этой демонстрационной деятельности. Работает ли AQuery в фоновом режиме все время? Проблема в том, что в последнем обновлении SignalA упоминается следующее

Я изменил транспорт. LongPolling теперь использует базовый-http-клиент вместо Aquery для http-общения. Я удалил все зависимости от Aquery.

Поэтому я не уверен, следует ли мне следовать этой демонстрационной деятельности или нет

Обновление 2:

Это то, что меня больше всего сбивает с толку в IntentService, метод OnHandleIntent вызывает stopSelf после завершения своих задач, когда я действительно хочу, чтобы код в IntentService продолжал работать все время

Protected abstract void onHandleIntent (намерение намерения) Добавлено в уровень API 3 Этот метод вызывается в рабочем потоке с запросом на обработку. За один раз обрабатывается только один Intent, но обработка происходит в рабочем потоке, который выполняется независимо от другой логики приложения. Таким образом, если этот код занимает много времени, он будет задерживать другие запросы к одному и тому же IntentService, но он ничего не задержит. Когда все запросы обрабатываются, IntentService останавливается, поэтому вы не должны называть stopSelf ().

    SignalA работает в потоке, который создает и запускает соединение, но весь доступ к сети выполняется в фоновом режиме. Оставшаяся работа над исходной нитью действительно легка, поэтому вполне нормально делать это на проходе UI.

    Чтобы ответить на ваш вопрос, вам нужно иметь поток, управляющий сигнальным соединением. Поэтому я считаю, что услуга – лучший выбор, поскольку SignalA должен постоянно работать.

    Что касается Aquery и демонстрационного проекта. Я удалил все зависимости в Aquery в библиотеках, а не в демо. Чтобы быть понятным, для запуска SignalA вам не требуется Aquery.

    В моем случае, что я хотел, это служба, а не служба намерений, так как мне нужно что-то, что будет работать до тех пор, пока приложение не закроется