2013-03-11 14 views
6

私はAndroidを勉強していますが、私はこの声明で立ち往生しています。 Googleから:Handler.sendEmptyMessage(0)のゼロの意味

「what」の値のみを含むメッセージを送信します。

戻り

メッセージが正常にメッセージ キューにに置かれた場合はtrueを返します。通常、ルーパー処理の メッセージキューが終了しているため、失敗するとfalseを返します。

誰かがゼロを含むメッセージの内容を説明してください。ありがとう

+0

するだけであるということです、ドキュメントのような彼らは本当に便利、そのドキュメントにあなたの説明を置くべき – njzk2

答えて

14

これはwhatという意味です。 whatは基本的に、受信者が受信するメッセージを識別できるようにする整数です。

あなたのhandleMessage関数を使用するがMessageオブジェクトを渡されると、メッセージが何であるかを把握するために公共の場whatを確認することができ、この

public void handleMessage (Message msg) 

のように見えます。 (msg.what

例えば、

あなたはとてもあなたのhandleMessage関数が今、あなたは成功と失敗のsendEmptyMessage(1)ためsendEmptyMessage(0)を持つことができ、この

public void handleMessage (Message msg) { 
    switch (msg.what) { 
     case 1: 
      //success handling 
      break; 

     case 0: 
      //failure handling 
      break; 
    } 
} 

ようになりwhat1 for success0 for failure

で、メッセージの2種類を送信します。

あなたは空のメッセージを送信するために持っていけないことを、覚えておいてください、あなたは

を行うことができます成功した場合にいくつかのテキストでメッセージを送信するために、たとえば、あまりにも

をそれに接続されているより多くのデータを持つMessageオブジェクトを送信することができます

と同様に故障

ゼロ手段は、それはちょうど空のメッセージを送信しているものの通り今

を0

Message.obtain(mHandler, 0, "Success text") 
は任意の値で置き換えることができます。この場合、アイデアは1つのタイプのメッセージしか持たず、Handlerはそれを理解します。したがって、受信したメッセージの種類がメッセージを受信する必要があるかどうかを確認する必要はありません。だから sendEmptyMessage(AnyInteger)うまく動作します。 0大会

+0

をmessage.what、言います!しかし、実際に 'oneIntMessage'のときに' emptyMessage'と呼んでいるのはなぜですか? – winklerrr

関連する問題