0

WIFI 接続の RSSI を定期的にポーリングする小さなプログラムを作成しています。プログラムで使用SystemClock.Sleep(2000)しています。

問題は、RSSI を 2 秒ごとに表示したいということです。しかし、現在、2 秒ごとにポーリングしても、結果はループの最後にしか表示されません。

コード スニペットは次のとおりです。

for(int i=0;i<10;i++)
        {
            Date dt=new Date();
            WifiInfo info = wifi.getConnectionInfo();
            int rssi = info.getRssi();
            textStatus.append("\n\nRSSI :" +Integer.toString(rssi)); 
            SystemClock.sleep(2000);
        }

何かいい案があれば幸いです。

よろしくキラン

4

2 に答える 2

3

UI スレッドでスリープを使用しないでください。

代わりに次の操作を行います。

  • 表示するメッセージを処理する MessageHandler (android.os.Handler) を作成します ( textStatus.append(...))
  • スリープを含むループを実行する作業スレッドを作成します
  • 現在、作業スレッドは textStatus を直接更新できません。代わりに、作業スレッドからメッセージ ハンドラーにメッセージを送信します。

追加した:

これはあなたを助けるかもしれない便利なリンクです:

セクション「UI スレッドでの高価な操作の処理」を参照してください。

http://developer.android.com/guide/appendix/faq/commontasks.html#threading

于 2010-11-17T10:56:48.627 に答える
0
  • 別のスレッドで行っていることを使用してみてください。
  • 必要になるまで継続的に実行し、
  • 2秒間スリープさせて、自分のことをして、
  • そこからメインスレッドを更新し、
  • このプロセスをループする



これが少し役立つことを願っています。

于 2010-11-17T10:54:19.957 に答える