Handler
所有的思想设计都是源于生活高于生活。
大概知识点: 源码epoll 设计思路 设计模式 异步消息 同步消息 消息屏障 IntentServer
管理机制: 消息管理所有的消息
所有的代码都在handler中运行的。
MassegeQuaua 是变量 是共享内存的
注意看代码流程:
Looper.loop()–> next() 取消息—>msg.target.dispatchMessage(msg);说明Looper.loop() 在哪个地方调用执行。决定了handleMessage 就是在哪个线程中执行的。
// 这个handler 是在主线程中创建的,
这个Handler 的Looper 默认是getMainLooper()
所以它的Looper.loop() 是在主线程中执行的。
所以handleMessage 里面主线程中执行的。
Handler mHandler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
Thread.dumpStack();
Log.i("fw", "handleMessage: "+ Looper.myLooper());
Log.i("fw", "handleMessage: "+ Looper.getMainLooper());
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler.sendEmptyMessage(0);}
// 结果:
2020-09-16 22:39:41.704 9700-9700/com.fengwei.generic I/fw: handleMessage: Looper (main, tid 2) {
be2e8f1}
2020-09-16 22:39:41.704