HttpPostを介してインターネットにデータを頻繁に送信するアプリケーションを開発しました。アプリは2つの部分に分かれています:
1)無限に実行されているサービス、2)ユーザーがデータ接続されたものをセットアップできるときのアクティビティ。
サービスプロパティ:
1)フォアグラウンドサービスとして実行します。2)WakeLockを使用します(フラグPARTIAL_WAKE_LOCが設定されています)。
アクティビティはサービスに接続し、ユーザーが[開始]ボタンを選択すると(特定のオプションを設定した後)、10秒ごとにサーバーにデータを送信することになっています。ユーザーがボタンを「クリック」せず、代わりに「戻る」をタップすると、アクティビティが終了し、サービスも終了します。ただし、「開始」を選択すると、サービスが開始されます(startService()が呼び出されます)。つまり、ユーザーが「停止」を選択してstopService()を呼び出すまで、アクティビティの後で破棄されず、継続的に実行されます。
このソリューションは非常にうまく機能しますが、電話のモデルによっては、データ転送が停止するため、数時間の作業後に何も送信しなくなることがあります。ブラウザでさえページを表示できません。「パケットデータの使用」のオンとオフを切り替えると役立つ場合がありますが、そうでない場合もあります。電話を再起動すると、常に問題が解決します。最も奇妙なことは、ブラウザが中断することなく1日中動作できることです。私は、ブラウザに10秒ごとに(AJAXを使用して)データを要求するように強制するJSコードを含む特別なページを用意しました。これは、何時間にもわたって完全に機能します。アプリを起動すると、たとえば2〜3時間問題なくデータが送信され、突然インターネット接続がオフになります。
何がこれらの問題を引き起こしているのか分かりません。どんな助けでもいただければ幸いです。非常に長いため、コードは表示しません。
前もって感謝します!
編集
問題の原因となっているデバイスは、Android 2.3.6(カーネルバージョン2.6.35.7)を搭載したSamsung GalaxyPocketGT-S5300です。