5

ユーザーが新しいメッセージを待機しているかどうかを確認するために、Webサービスを「ポーリング」する必要があるアプリケーションがあります。Webサービスを制御できないため、「プッシュ」メカニズムに切り替えることができません。X秒ごとにリクエストを送信して、何が利用できるかを確認するのに行き詰まります。

System.Threading.Timerを使用してリクエストを頻繁に行っていますが、いくつかの問題が発生しています。最大の問題は、電話が「スタンバイ」モードになると実行を停止することです(画面はオフになりますが、通話や電子メール/ txt通知を受け取ることはできます)。

他のバックグラウンドアプリケーションと同じように動作させたいです。バッテリーの消耗が大きすぎずに動作させるにはどうすればよいですか?

4

5 に答える 5

4

私自身の質問に答えるのは嫌いですが、デバイスがスリープ状態のときでも実行できたthisを指摘されました。完璧に機能しているようです。

于 2008-11-14T21:48:20.790 に答える
1

あなたにできることは何もありません。スタンバイ モードは、電力を節約するためにプロセッサを一時停止するためのものであり、プロセッサが実行されていない場合、コードを実行する方法はありません。デバイスがスタンバイ モードになるのを防ぐためにアプリケーションでできることはありますが、これはまったくお勧めできません。

于 2008-11-12T15:38:13.727 に答える
1

うん。MusiGenesis が回答した方法と同様に、デバイスを稼働状態に維持しなければ、多くのことを行うことはできません。一部の電話が「ゲーム/アプリの実行中」を通知する方法と同様に、バッテリーが平手打ちされています.

携帯電話からテキスト メッセージングを利用するインターフェイスを作成し (これはまだ機能します)、Web サービスにテキスト メッセージを送信するようにするにはどうすればよいでしょうか? それは可能でしょうか?そのようなメソッドも実行を停止する可能性があると推測していますが、それは考えだと思いますか?

于 2008-11-12T15:42:56.480 に答える
1

コンパクトなフレームワークについてはよくわかりませんが、Win32 には、スタンバイからコンピューターをウェイクアップできる WaitableTimer があります。ただし、.Net にはラッパーがないため、ネイティブ呼び出しが必要です。

于 2008-11-12T15:45:33.790 に答える
0

Web サービスを変更することはできませんが、クライアントと元の Web サービスの間に 2 つ目の "シャドウ" Web サービスを追加できる場合があります。シャドウ Web サービスは、元の Web サービスをポーリングし、検出したものをすべて PDA に「プッシュ」できます。

しかし、あなたはまだ同じ問題を抱えているかもしれないと思います。Webサービスから「プッシュ」したことはありませんが、基本的には、クライアントのメソッドへのデリゲートを取得するWebサービスメソッドへの最初の呼び出しをクライアントに行わせ、Webサービスがハングアップすることで実装されていると思います。Web サービスが何かをプッシュする必要がある場合、そのデリゲートを呼び出します。その間にクライアントがスタンバイ モードになった場合、サーバーからデリゲートを呼び出そうとしても失敗します。

于 2008-11-12T17:32:57.507 に答える