検索

ホームページ  >  に質問  >  本文

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

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

伊谢尔伦伊谢尔伦2780日前938

全員に返信(4)返信します

  • ringa_lee

    ringa_lee2017-04-17 17:22:17

    2 番目のメソッドは、送信されたメッセージを判断して別の処理を実行できます。分類処理が必要ない場合は、空メッセージを送信するだけで十分です。

    返事
    0
  • 天蓬老师

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

    ソースコードから
    まずはsendEmptyMessage(int what)

    リーリー

    もう一度クリックしてくださいsendEmptyMessageDelayed(what, 0)

    リーリー

    sendEmptyMessageDelayed(int what, long delayMillis) メソッドから
    取得した Message オブジェクトにどのようなパラメータが割り当てられているかを確認できます


    obtainMessage(1,data)

    のソースコードを見てください。 リーリー

    メソッドはMessage.obtain(this, what, obj)を返し、その後はobtain(this, what, obj)

    の表示を続けます。 リーリー

    メソッド内の Message も get によって取得されますが、ここでは obj オブジェクトも Message に割り当てられます。
    sendToTarget() のソース コード内のターゲットは Handler です。これは、sendMessage() メソッド

    が呼び出されるという意味です。 リーリー リーリー

    sendEmptyMessage(int what)obtainMessage(int what, Object obj).sendToTarget()
    の最大の違いは、オブジェクト

    が存在しないことです。

    参考:
    ハンドラーのsendEmptyMessage(int what)とsendMessage(Message msg)の違いは何ですか?
    ハンドラー sendMessage と getMessage (sendToTarget) の比較

    返事
    0
  • 天蓬老师

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

    最初の方法は空のメッセージを送信することであり、2 番目の方法はメッセージ プールからメッセージを取得して送信することです。

    返事
    0
  • 伊谢尔伦

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

    それも同様です。使用できるさまざまな API が提供されており、習慣に応じて使用できるだけです

    返事
    0
  • キャンセル返事