В моем приложении для Android я реализую соединение SignalR (https://github.com/erizet/SignalA), чтобы подключиться к серверу-концентратору для отправки запросов и получения ответов.Android SignalR должен быть реализован как Service или IntentService?
образец моего кода выглядит следующим образом:
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 - Service (http://developer.android.com/reference/android/app/Service.html)
ИЛИ
2 - Намерение службы (http://developer.android.com/training/run-background-service/create-service.html)
Имея в виду, что я буду необходимо отправить строки в службу и получить строки ответа от службы.
Я был бы очень признателен, если бы кто-нибудь покажет мне, как реализовать такое подключение в коде как фоновое обслуживание/intenservice.
Спасибо за чтение.
UPDATE:
Пожалуйста, смотрите эту демонстрационную деятельность сделанные разработчиком как, как он реализован SignalA https://github.com/erizet/SignalA/blob/master/Demo/src/com/zsoft/SignalADemo/DemoActivity.java
Проблема заключается в том AQuery (что я ничего не знаю о) используется в этой демонстрационной деятельности , AQuery постоянно работает в фоновом режиме? Проблема заключается в том, что последнее обновление информации о SignalA содержит следующие значения:
Я изменил транспорт. LongPolling теперь использует базовый-http-клиент вместо Aquery для http-общения. Я удалил все зависимости от Aquery.
Поэтому я не уверен, должен ли я следовать этой демонстрационной деятельности или не
Update 2:
Это вещь, которая сбивает с толку меня больше всего в IntentService, то OnHandleIntent вызовы методов stopSelf после того, как закончит свои задачи, когда я на самом деле хочу код в IntentService продолжать работать все время
защищены абстрактные аннулируются onHandleIntent (Intent намерение) Добавлено в API level 3 Этот метод вызывается в рабочем потоке с запросом на обработку. За один раз обрабатывается только один Intent, но обработка происходит в рабочем потоке, который выполняется независимо от другой логики приложения.Таким образом, если этот код занимает много времени, он будет задерживать другие запросы к одному и тому же IntentService, но он ничего не задержит. Когда все запросы обрабатываются, IntentService останавливается, поэтому вы не должны называть stopSelf().
Здравствуйте, ребята, мне очень нужна помощь, пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы. –