||
1. struct ALooperRoster controls every looper.
deliverMessage
2. Alooper structure:
friend struct ALooperRoster;
struct Event {
int64_t mWhenUs;
sp<AMessage> mMessage;
};
Mutex mLock;
Condition mQueueChangedCondition;
AString mName;
List<Event> mEventQueue;
struct LooperThread;
sp<LooperThread> mThread;
bool mRunningLocally;
具体看Post实现,
ALooper::registerHandler(const sp<AHandler> &handler) {
return gLooperRoster.registerHandler(this, handler);
}
3 AMessage
void AMessage::post(int64_t delayUs) {
gLooperRoster.postMessage(this, delayUs);
}
这里有个流程图可以作为 reference,
http://blog.csdn.net/dtplayer/article/details/12071271
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-18 13:03
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社