ThreadLocal
Before looking down, you need to know about Java's threadlocal class, you can refer to the blog:
Decryption threadlocal
Looper, Handler and MessageQueue
Let's analyze the previous code and see what the relationship between Handle, Looper, and MessageQueue is in the handler mechanism.
Packagecn.lixyz.handlertest;Importandroid.app.Activity;ImportAndroid.os.Bundle;ImportAndroid.os.Handler;ImportAndroid.os.Looper;ImportAndroid.os.Message;ImportAndroid.util.Log;ImportAndroid.view.View;ImportAndroid.widget.Button; Public classMainactivityextendsActivity {Privatebutton button; PrivateHandler Handler; @Overrideprotected voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate); Setcontentview (R.layout.activity_main); Button=(Button) Findviewbyid (R.id.button); Button.setonclicklistener (NewView.onclicklistener () {@Override Public voidOnClick (View v) {Message msg=Handler.obtainmessage (); Msg.what= 100; Handler.sendmessage (msg); LOG.D ("Tttt", "SendMessage:" +Thread.CurrentThread (). GetName ()); } }); Workerthread WT=NewWorkerthread (); Wt.start (); } classWorkerthreadextendsThread {@Override Public voidrun () {Super. Run (); Looper.prepare (); Handler=NewHandler () {@Override Public voidhandlemessage (Message msg) {Super. Handlemessage (msg); LOG.D ("Tttt", "Handlemessage:" +Thread.CurrentThread (). GetName ()); inti =Msg.what; LOG.D ("Tttt", "Received Message object:" +i); } }; Looper.loop (); } }}
Android Note (33) communication between Android threads (v) thread, Handle, Looper, and MessageQueue