Вот мой пост:
Я пытаюсь сделать себя максимально понятным:
- Описание классов в моем приложении
- Описание архитектуры кода (Сервисом и Деятельностью)
- Описание того, что должно произойти
- Описание того, что на самом деле происходит
- Logcat
- Исходный код
Описание приложений классов
У меня в заявке:
- служба, запускаемая при загрузке и управляемая
MAJService
классом
- деятельность, которой управляет
ConsoNRJ
класс
- рабочий класс, который будет получать HTML-страницы по HTTP, который называется
MAJDonnees
- вспомогательный класс с именем
InfosConso
, который создает экземпляр MAJDonnees
работника.
Описание обработки
Когда служба запускается, она будет:
- создать
InfosConso
объект
- этот
InfosConso
объект создаст MAJDonnees
- этот
MAJDonnees
объект будет выполнять HTTP-запросы, используя HttpURLConnection
Деятельность делает почти то же самое:
- создать
InfosConso
объект
- этот
InfosConso
объект создаст MAJDonnees
- этот
MAJDonnees
объект создаст AsyncTask
, а затем выполнит HTTP-запросы, используя HttpURLConnection
Вы можете увидеть график, который может помочь вам понять мой код:
code.google.com/p/consonrj/wiki/CodeStructure
Что должно произойти
Поскольку Activity и Служба в основном используют один и тот же код (в классе MAJDonnees
), они должны вести себя точно так же: извлекать HTML-страницы и анализировать их
Что на самом деле происходит
При запуске из службы HttpURLConnections
возвращает неверный результат при обработке в MAJDonnees
.
Экземпляр HttpURLConnections
с именем h
дает неверный ответ HTTP: h.getResponseCode()
возвращает -1.
Я не знаю, как получить больше отладочной информации.
Однако, если действие запущено, соединения HTTP работают во время обработки в MAJDonnees
, Indeede h.getResponseCode()
возвращает 200 (HTTP 200 OK).
ТО Если служба снова запустится (планируется запускать каждые x минут), HTTP-соединения будут работать!
Logcat
Сначала можно запустить logcat службы, затем действие, затем снова службу и посмотреть поведение.
http://pastebin.com/DGc8fym2
Извините, это по-французски, надеюсь, вы все еще можете догадаться! :)
Исходный код
Если хотите, можете посмотреть весь источник по адресу:
code.google.com/p/consonrj/source/browse/#svn/trunk
Надеюсь, вы поможете мне отладить это! Моему сервису нужно получать данные из Интернета при запуске устройства и каждые x часов / дней, и не нужно, чтобы действие запускалось первым!
Спасибо.