찾다

 >  Q&A  >  본문

android - 菜鸟对于 handler发送msg的疑问。

handler.sendEmpityMessage();和handler.obtainMessage(1,data).sendToTarget();有什么不同

伊谢尔伦伊谢尔伦2784일 전944

모든 응답(4)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-04-17 17:22:17

    두 번째 방법은 보낸 메시지를 판단하고 다른 처리를 수행할 수 있습니다. 분류 처리가 필요하지 않은 경우 빈 메시지를 보내는 것으로 충분합니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:22:17

    소스코드를 보면
    먼저 sendEmptyMessage(int what)

    으아아아

    다시 클릭sendEmptyMessageDelayed(what, 0)

    으아아아

    sendEmptyMessageDelayed(int what, long delayMillis) 메서드에서
    획득한 메시지 개체에 어떤 매개변수가 할당되었는지 확인할 수 있습니다.


    obtainMessage(1,data)

    소스코드 보기 으아아아

    메서드가 반환됩니다Message.obtain(this, what, obj), 계속해서 살펴보세요obtain(this, what, obj)

    으아아아

    메서드의 메시지도 acquire를 통해 가져오지만 여기서는 obj 개체도 Message에 할당됩니다.
    sendToTarget() 소스 코드의 대상은 Handler입니다. 이는 sendMessage() 메서드

    가 호출된다는 의미입니다. 으아아아 으아아아

    sendEmptyMessage(int what)obtainMessage(int what, Object obj).sendToTarget()
    의 가장 큰 차이점은

    객체가 없다는 점입니다.

    참고:
    Handler의 sendEmptyMessage(int what)와 sendMessage(Message msg)의 차이점은 무엇인가요?
    sendMessage 핸들러와 acquireMessage(sendToTarget) 비교

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:22:17

    첫 번째는 빈 메시지를 보내는 것이고, 두 번째는 메시지 풀에서 메시지를 가져와서 보내는 것입니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:22:17

    다르지 않고 다양한 API를 제공하여 사용자의 습관에 맞게 사용할 수 있습니다

    회신하다
    0
  • 취소회신하다