Android框架层源码解析
文章平均质量分 82
主要介绍android多媒体框架层源码解析,以及常用类的框架层源码解析。
刘望舒
腾讯最具价值专家,Android进阶书畅销前三: 《Android进阶指北》《Android进阶解密》《Android进阶之光》 作者 ,连续5年蝉联电子工业出版社年度优秀作者。国内首批Android开发者,10多年开发经验,前华为架构师、独角兽公司技术总监。国内唯一被百度百科收录的Android技术专家,谷歌开发者社区、Droidcon等技术大会特邀讲师,CSDN 2018年度十大博客之星。
展开
-
Android系统启动流程(一)解析init进程启动过程
作为“Android框架层”这个大系列中的第一个系列,我们首先要了解的是Android系统启动流程,在这个流程中会涉及到很多重要的知识点,这个系列我们就来一一讲解它们,这一篇我们就来学习init进程。原创 2017-02-07 11:29:48 · 41003 阅读 · 7 评论 -
Android多线程(三)AsyncTask源码分析(Android7.0)
此前写过一篇AsyncTask源码分析的文章,但写的不是很好,最近看过了android7.0的AsyncTask源码,所以准备再写一篇。原创 2016-10-19 12:52:06 · 3771 阅读 · 1 评论 -
Android View体系(八)从源码解析View的layout和draw流程
上一篇文章我们讲了View的measure的流程,接下来我们讲下View的layout和draw流程,如果你理解了View的measure的流程,那这篇文章自然就不在话下了。原创 2016-03-25 17:31:15 · 6524 阅读 · 2 评论 -
Android View体系(四)从源码解析Scroller
在[Android View体系(二)实现View滑动的六种方法]这篇文章中我们讲到了用Scroller来实现View的滑动,所以这篇文章我们就不介绍Scroller是如何使用的了,本篇就从源码来分析下Scroller为何能够实现View的滑动。原创 2016-03-05 16:35:34 · 7495 阅读 · 6 评论 -
Android View体系(七)从源码解析View的measure流程
在上一篇我们了解了Activity的构成后,开始了解一下View的工作流程,就是measure、layout和draw。measure用来测量View的宽高,layout用来确定View的位置,draw则用来绘制View。这一讲我们来看看measure流程,measure流程分为View的measure流程和ViewGroup的measure流程,只不过ViewGroup的measure流程除了要完成自己的测量还要遍原创 2016-03-21 15:47:11 · 8642 阅读 · 7 评论 -
Android View体系(六)从源码解析Activity的构成
本来这篇是要讲View的工作流程的,View的工作流程主要指的measure、layout、draw这三大流程,在讲到这三大流程之前我们有必要要先了解下Activity的构成,所以就有了这篇文章。原创 2016-03-15 17:44:35 · 5646 阅读 · 1 评论 -
Android View体系(五)从源码解析View的事件分发机制
三年前写过事件分发机制的文章但是写的不是很好,所以重新再写一篇,关于事件分发机制的文章已经有很多,但是希望我这篇是最简洁、最易懂的一篇。原创 2016-03-12 13:35:43 · 5447 阅读 · 11 评论 -
Camera源码分析(android2.2)
android通过android.hardware.Camera类来控制摄像头设备的,要使用只有通过android.hardware.Camera.open()来打开,这样就会创建一个新的Camera对象。android提供了一些接口来给予回调,控制Camera的状态,分别是: 1.android.hardware.Camera.ErrorCallback:摄像头出错的原创 2011-09-08 14:10:28 · 6600 阅读 · 2 评论 -
Android开机启动流程说明
第一步:启动linux1.Bootloader2.Kernel第二步 android系统启动:入口为init.rc(system\core\rootdir)1./system/bin/service manager: Binder 守护进程;2.Runtime;3.Zygote :app-process/app-main;4.Start VM;5.Start ser原创 2011-11-13 12:34:09 · 6515 阅读 · 1 评论 -
android应用程序管理机制
android应用程序管理主要由PackageManager这个类来管理,实现PackageManager这个抽象类的是ContextImpl.java。在ContextImpl.java中,有一个内部静态类叫ApplicationPackageManager,实现了所有PackageManager的接口。 static final class ApplicationPackageMana原创 2011-11-27 18:14:25 · 4859 阅读 · 0 评论 -
MediaPlayer框架概述(一)
1.媒体播放器概述Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本原创 2011-12-03 15:07:46 · 7974 阅读 · 1 评论 -
MediaPlayer框架概述(二)
3 mediaplayer的核心库libmedia.solibs/media/mediaplayer.cpp文件用于实现mediaplayer.h提供的接口,其中一个重要的片段如下所示:const sp& MediaPlayer::getMediaPlayerService(){ Mutex::Autolock _l(mServiceLock); if (mMedia原创 2011-12-05 00:37:03 · 6286 阅读 · 1 评论 -
Android MediaPlayer+Stagefright框架(音频)图解
在android原生的媒体播放器中是由mediaplayerservice来控制媒体播放器的,在mediaplayerservice中创建了mediaplayer,在mediaplayer.java的native方法通过jni调用android_media_mediaplayer.cpp中的方法,接着往下调用mediaplayer.cpp中的方法,mediaplayer通过ipc机制调用media原创 2012-01-26 10:20:53 · 17487 阅读 · 3 评论 -
Stagefright框架解读(—)音视频Playback流程
从Android 2.0,Google引进了Stagefright,并在android2.3时用Stagefright在Android中是以shared library的形式存在(libstagefright.so),其中AwesomePlayer可用來播放video/audio。AwesomePlayer提供許多API,可以让上层的应用用程式(Java/JNI)來呼叫,我在这里简单说明一原创 2012-01-28 12:38:10 · 7917 阅读 · 0 评论 -
Android mediaRecorder框架简述(一)
下面是框架简图:首先调用mediaRecorder.java中的方法比如start方法,会调用jni:也就是调用android_media_recorder.cpp的start方法: 接着到mediaRecorder.cpp,mediaRecorder是由mediaplayerService创建的,而mediaRecoder.cpp和mediap原创 2012-12-10 15:46:57 · 8891 阅读 · 6 评论 -
Android mediaRecorder框架简述(二)
这里有个setupVideiEncoder,看来这里应该是对视频编码的地方 根据不同的编码类型来设置不同的参数,这个方法代码有些多直截取部分代码:来看看关键的一句,这里创建了OMXCodec 然后把创建了的编码器赋值给MediaSource,这里的MediaSource可以看作是OMXCodec的封装,这样编码器的准备工作就已经做好了:接着我们回到startMPEG4Recor原创 2012-12-10 16:21:10 · 6053 阅读 · 1 评论 -
Android IntentService浅谈以及源码分析
当启动一个Service时,他默认都是运行在主线程的,如果Service将要运行非常耗时或者可能被阻塞的操作时,应用程序将会被挂起,甚至会出现ANR错误。为了避免这一问题,应该在Service中重新启动一个新的线程来进行这些操作。但有一个更好的方法那就是用IntentService IntentService使用队列的方式将请求的Intent加入队列,然后开启一个工作线程来处理队列中的原创 2013-02-28 10:53:16 · 2450 阅读 · 0 评论 -
Android多线程(二)AsyncTask源码分析
AsyncTask的基本用法这里就不在赘述了,基本是个安卓开发者就会。1.android 3.0以前的 AsyncTaskprivate static final int CORE_POOL_SIZE = 5; private static final int MAXIMUM_POOL_SIZE = 128; private static final int KEEP_AL原创 2015-04-14 18:45:33 · 4458 阅读 · 0 评论