0

这是我的帖子:

我试图让自己尽可能清楚:

  1. 我的应用程序中的类的描述
  2. 代码架构的描述(由服务和活动)
  3. 描述应该发生的事情
  4. 描述实际发生的事情
  5. 日志猫
  6. 源代码

应用类说明

我的申请中有:

  • 启动时启动的服务,由MAJService类管理
  • ConsoNRJ班级管理的活动
  • 一个工作类,它将通过 HTTP 获取 HTML 页面,称为MAJDonnees
  • 一个被调用的助手类,InfosConso它将实例化一个MAJDonnees工作者。

处理说明

当服务启动时,它将:

  • 创建一个InfosConso对象
  • 这个InfosConso对象将创建一个MAJDonnees
  • 这个MAJDonnees对象将使用 HTTP 查询HttpURLConnection

该活动几乎相同:

  • 创建一个InfosConso对象
  • 这个InfosConso对象将创建一个MAJDonnees
  • MAJDonnees对象将创建一个AsyncTask,然后使用HttpURLConnection

您可以看到一个可以帮助您理解我的代码的图表:
code.google.com/p/consonrj/wiki/CodeStructure


应该发生什么

由于 Activity 和 Service 基本上运行相同的代码(在MAJDonnees类中),它们的行为方式应该完全相同:获取 HTML 页面并解析它们

实际发生了什么

从服务运行时,在HttpURLConnections处理时返回错误结果MAJDonnees。调用的HttpURLConnections实例h给出了无效的 HTTP 响应:h.getResponseCode()返回 -1。
我不知道如何获得更多的调试信息。

但是,如果活动已启动,HTTP 连接在处理时工作MAJDonnees,确实h.getResponseCode()返回 200(HTTP 200 OK)。

那么如果服务再次运行(它计划每 x 分钟运行一次),HTTP 连接就会工作!


日志猫

您可以先运行服务的 logcat,然后运行活动,然后再运行服务,然后查看行为。
http://pastebin.com/DGc8fym2
对不起是法语,希望你还能猜到!:)

源代码

如果您愿意,可以在以下位置查看整个源代码:
code.google.com/p/consonrj/source/browse/#svn/trunk


我希望你能帮我调试这个!我的服务需要在设备启动时和每 x 小时/天从 Internet 获取数据,并且不需要首先启动活动!

谢谢。

4

1 回答 1

0

非常感谢您的建议布拉德。

事实上,我自己通过在应用程序中生成更多调试详细信息来解决了这个问题。

实际上,活动使用Compte从手机内存中的文件加载用户凭据的类,而服务没有。因此,该服务没有登录 HTML 页面的用户凭据。因此,该服务使用空凭据发送登录请求,直到活动加载它们。

现在该服务还使用Compte该类加载凭据,它运行良好。我很抱歉我没有更彻底地调查我的应用程序。

无论如何,谢谢布拉德!非常感激。

于 2010-05-07T11:29:33.047 回答