0

これが私の投稿です:

私は自分自身をできるだけ明確にしようとしています:

  1. 私のアプリケーションのクラスの説明
  2. コードアーキテクチャの説明(サービス別およびアクティビティ別)
  3. 何が起こるべきかの説明
  4. 実際に起こることの説明
  5. Logcat
  6. ソースコード

アプリケーションクラスの説明

私のアプリケーションには次のようなものがあります。

  • MAJServiceクラスによって管理される、起動時に起動するサービス
  • ConsoNRJクラスによって管理されるアクティビティ
  • HTTP経由でHTMLページを取得するワーカークラス。MAJDonnees
  • InfosConso呼び出され、ワー​​カーをインスタンス化するヘルパークラスMAJDonnees

処理の説明

サービスが開始されると、次のようになります。

  • InfosConsoオブジェクトを作成する
  • このInfosConsoオブジェクトはMAJDonnees
  • このMAJDonneesオブジェクトは、を使用してHTTPクエリを実行しますHttpURLConnection

アクティビティはほぼ同じです。

  • InfosConsoオブジェクトを作成する
  • このInfosConsoオブジェクトはMAJDonnees
  • このMAJDonneesオブジェクトはを作成しAsyncTask、を使用してHTTPクエリを実行しますHttpURLConnection

あなたは私のコードを理解するのに役立つかもしれないグラフを見ることができます:
code.google.com/p/consonrj/wiki/CodeStructure


何が起こるべきか

アクティビティとサービスは基本的に(クラス内で)同じコードを実行するため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時間/日ごとにインターネットからデータをフェッチする必要があり、最初にアクティビティを開始する必要はありません。

ありがとう。

4

1 に答える 1

0

ブラッドさん、アドバイスありがとうございます。

実際、アプリケーションでより詳細なデバッグを生成することで、私は自分で問題を解決しました。

実際、このアクティビティはCompte電話のメモリ内のファイルからユーザー資格情報を読み込むクラスを使用しますが、サービスはそうしませんでした。そのため、サービスには、HTML ページにログオンするためのユーザー資格情報がありませんでした。そのため、アクティビティがそれらをロードするまで、サービスは空の資格情報でログイン要求を送信しました。

サービスもクラスを使用して資格情報をロードするCompteようになったので、うまく機能します。アプリをもっと徹底的に調査しなかったことを非常に残念に思います。

とにかくありがとうブラッド!とても有難い。

于 2010-05-07T11:29:33.047 に答える