博客
关于我
Android原生MediaPlayer调用时序图
阅读量:374 次
发布时间:2019-03-05

本文共 727 字,大约阅读时间需要 2 分钟。

一、引言

在Android系统中,MediaPlayer作为一个“壳”,负责接收上层应用的调用,而实际的音视频播放逻辑则主要依赖于底层的native层实现。由于MediaPlayer同时涉及apk和native层的调用逻辑,且通常通过mediaplayerservice(Binder服务)进行通信,因此了解其调用时序对于优化音视频播放性能尤为重要。以下将基于一个最简单的MediaPlayer调用流程,详细阐述其调用时序,并做一些简要分析。

二、MediaPlayer调用时序图解析

在本文中,基于一个最简单的MediaPlayer调用流程绘制了一个调用时序图。图中红色虚线框表示Binder服务,而右边蓝色虚线框则表示mediaplayerfactory最终评分并选择的播放器。需要注意的是,图中部分关键函数以蓝色字体标注。以下是需要特别注意的几点:

  • apk调用setdatasource接口后,会通过mediaplayerservice创建MediaPlayer的Binder服务。在MediaPlayerService类中,client字段已经实现了Binder的Bn端接口,不要误解为Bp端。
  • setdatasource接口的调用不仅负责创建Binder服务,还会负责mediaplayerfactory的评分和下层播放器的创建。
  • 渲染相关的初始化操作通常在apk调用prepare接口时完成,此时会实例化surface,用于后续的音视频播放渲染。
  • 从start到reset的接口调用中,MediaPlayer仅充当一个“传令兵”角色,主要用于传递控制命令。
  • 调用release接口时,native层会进行渲染资源的释放,并进行一些初始化工作。
  • 转载地址:http://dbwwz.baihongyu.com/

    你可能感兴趣的文章
    PostgreSQL+PostGIS实现两坐标点之间最短路径查询算法函数(地图工具篇.12)
    查看>>
    Qt开发——简易调色板QPalette
    查看>>
    PostgreSQL-解决连接时遇到的乱码问题
    查看>>
    PostgreSQL15.2最新版本安装_远程连接_Navicat操作_pgAdmin操作_Windows10上安装---PostgreSQL工作笔记001
    查看>>
    PostgreSQL9.1 双机部署配置(主备数据同步)
    查看>>
    Qt开发——简易网络浏览器(一)
    查看>>
    Qt开发——简易成绩登记系统
    查看>>
    Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句
    查看>>
    Postgresql中PL/pgSQL的游标、自定义函数、存储过程的使用
    查看>>
    Postgresql中的表结构和数据同步/数据传输到Mysql
    查看>>
    Postgresql中自增主键序列的使用以及数据传输时提示:错误:关系“xxx_xx_xx_seq“不存在
    查看>>
    postgreSQL入门命令
    查看>>
    PostgreSQL删除数据库报"ERROR: There is 1 other session using the database."
    查看>>
    PostgreSQL和Oracle两种数据库有啥区别?如何选择?
    查看>>
    PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案
    查看>>
    PostgreSQL学习总结(1)—— PostgreSQL 入门简介与安装
    查看>>
    PostgreSQL学习总结(2)—— PostgreSQL 语法
    查看>>
    PostgreSQL学习总结(3)—— PostgreSQL 数据类型
    查看>>
    PostgreSQL学习总结(6)—— PostgreSQL 模式(SCHEMA)详解
    查看>>
    PostgreSQL学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
    查看>>