1

looper.loop がどのように機能するか、コードでいつ使用するかを理解しようとしています。実行可能なバインドされたサービスがあります。内部には、Ui を更新するコードを保持するために使用されるハンドラーがあります。これがコードです。

private Runnable builder = new Runnable() {
public void run() 
{
  while(isThreadStarted == true)
  {
    if (newgps == 1)
     {  
         Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
                       public void run() { 
                         //some code that updates UI
                       }
                 }
           }
      }
  }
  looper.prepair
} 
  1. 私がルーパーを読んだことから。ハンドラが作成される前に prepare を呼び出す必要があります。しかし、そうしなかったことに気付きましたが、このコードはまだ機能しています。これはどのように可能ですか?
  2. これを修正したいのですが、loper.loop をどこに置くべきかわかりません。このハンドラは何度も呼び出されるためです。.prepare の直後に looper.loop を入れてもよろしいでしょうか? それから .quit when isThreadStarted == false?
4

2 に答える 2

0

Handlerアタッチするため、 は UI スレッドに関連付けられますLooper.getMainLooper()。UI スレッドはLooperアプリケーションの起動時に準備を行うため、アプリケーション自体が行う必要はありません。

于 2013-07-14T13:19:09.463 に答える