android - 菜鸟对于 handler发送msg的疑问。
伊谢尔伦
伊谢尔伦 2017-04-17 17:20:17
0
4
937

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(4)
左手右手慢动作

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

いいねを押す +0
Peter_Zhu

ソースコードから
まずは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
Peter_Zhu

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

いいねを押す +0
伊谢尔伦

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート