2013-03-11 4 views
6

나는 안드로이드를 배우고 있으며 나는이 문장에 갇혀있다. Google에서 :Handler.sendEmptyMessage (0)에서 제로 평균은 무엇입니까

어떤 값이 포함 된 메시지를 보냅니다.

true를 반환

반환은 메시지가 성공적으로 메시지 큐에 배치 된 경우. 실패시 false를 반환하며 대개 루퍼 처리 메시지 대기열이 종료되기 때문입니다.

누군가 제로가 포함될 메시지가 무엇인지 설명해주십시오. 감사합니다

+0

doc가 말하듯이, message.what – njzk2

답변

14

의미는 what 값을 의미합니다. what은 기본적으로 수신자가받은 메시지를 식별 할 수있는 정수입니다.

귀하의 handleMessage 기능이

public void handleMessage (Message msg) 

처럼 당신이 Message 객체를 전달하고 메시지에 대해 무엇인지 알아 내기 위해 공공 필드 what을 확인할 수 있습니다 보인다. (msg.what)

예 :

당신은 지금 당신이 실패 성공 sendEmptyMessage(0)sendEmptyMessage(1)을 가질 수 what1 for success

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

     case 0: 
      //failure handling 
      break; 
    } 
} 

같은 0 for failure

그래서 당신의 handleMessage 기능이 보일 것이다 뭔가, 두 가지 유형의 메시지를 보낼 수 있습니다.

당신이 빈 메시지를 보낼 필요 없다 있음을 기억하십시오, 당신은 너무

성공에 일부 텍스트로 메시지를 보낼 수있는 예를 들어

당신이 할 수있는 첨부 더 많은 데이터와 메시지 객체를 보낼 수

유사 실패

제로 수단, 그냥 빈 메시지를 보내는 것을 따라 이제

과 0

Message.obtain(mHandler, 0, "Success text") 
는 값으로 대체 할 수있다. 이 경우에는 하나의 유형의 메시지 만 있고 처리기는이를 이해합니다. 따라서 메시지를 수신해야하는 메시지의 종류를 확인하지 않아도됩니다. 그래서 sendEmptyMessage(AnyInteger) 잘 작동합니다. 0은 단지 관습에 의한 것입니다.

+0

그들은 그들의 문서에 당신의 설명을 넣어 줘야합니다. 정말 도움이됩니다! 하지만 실제로'oneIntMessage' 일 때 왜 그것들을'emptyMessage'라고 부릅니까? – winklerrr