我正在研究Android Stagefright中的Stagefright实现。根据我的理解,NuPlayerFactory正在创建NuPlayerDriver,而它又创建了ALooper和NuPlayer。我无法理解ALooper以及它是做什么的。我可以看到NuPlayer中的所有实现都在调用AMessage调用,例如如下所示:
NuPlyercpp: new AMessage(kWhatSourceNotify, id());我不知道它如何触发NuPlayer::onMessageReceived()。读者们能解释一下吗?
发布于 2014-05-18 21:01:37
在NuPlayerDriver构造函数中,您可以看到
mPlayer = new NuPlayer;
mLooper->registerHandler(mPlayer);这个ALooper::registerHandler()使用全局ALooperRoster来记住处理程序(mPlayer)和活套(mLooper)之间的关系。
在NuPlyer.cpp中,一般模式是:
sp<AMessage> msg = new AMessage(..., id());
....
msg->post();AMessage::post()调用全局ALooperRoster,使用在NuPlayerDriver构造函数中建立的关系,使用0延迟发布消息。
https://stackoverflow.com/questions/23724514
复制相似问题