Multimedia Alooper 机制分析

本文深入探讨了Android底层多媒体处理中的ALooper、AHandler和AMessage机制,与普通的Looper机制进行了对比。主要内容包括ALooper线程创建、AHandler与ALooper绑定、AMessage与AHandler的交互以及AMessage的异步和同步发送流程。通过AMessage的键值对形式,传递参数变得灵活便捷。
摘要由CSDN通过智能技术生成

android  底层的录制和播放都会用到ALooper,AHandler和AMessage,这个和上一篇讲的looper有什么不一样呢?其实作用是差不多的,只是实现的方式不一样而已。

1、looper线程的创建

status_t ALooper::start(
        bool runOnCallingThread, bool canCallJava, int32_t priority) {
    if (runOnCallingThread) {  //如果传入的参数为true,就会使用当前的线程作为looper线程,否则下面会再创建一个线程作为looper线程
        {
            Mutex::Autolock autoLock(mLock);

            if (mThread != NULL || mRunningLocally) {
                return INVALID_OPERATION;
            }

            mRunningLocally = true;
        }

        do {
        } while (loop());

        return OK;
    }

    Mutex::Autolock autoLock(mLock);

    if (mThread != NULL || mRunningLocally) {
        return INVALID_OPERATION;
    }

    mThread = new LooperThread(this, canCallJava);

    status_t err = mThread->run(
            mName.empty() ? "ALooper" : mName.c_str(), priority);
    if (err != OK) {
        mThread.clear();
    }

    return err;
}
调用ALooper的start()函数后,就会进入loop,也就是一直循环调用loop()函数,如果传入的第一个参数是true,就会让当前线程变成looper线程,否则会创建一个新的looper线程。

   virtual bool threadLoop() {
        return mLooper->loop();
    }
其实就是创建一个普通线程,然后
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值