
FrameWork源码
文章平均质量分 86
小图包
这个作者很懒,什么都没留下…
展开
-
Android屏幕刷新机制
原因是只有两个 buffer,Back buffer正在被GPU用来处理B帧的数据, Frame buffer的内容用于Display的显示,这样两个buffer都被占用,CPU 则无法准备下一帧的数据。那么,如果再提供一个buffer,CPU、GPU 和显示设备都能使用各自的buffer工作,互不影响。优先级的高低和处理顺序有关,每当收到 VSYNC 信号时,Choreographer 将首先处理 INPUT 类型的任务,然后是 ANIMATION 类型,最后才是 TRAVERSAL 类型。原创 2022-11-27 21:05:36 · 1168 阅读 · 0 评论 -
Android 源码分析 (十一) ContentProvider 启动
ContentProvider (内容提供者) 属于四大组件之一,可以说它是在四大组件中开发者使用率最少的一个,它的作用就是进程间进行数据交互,底层采用 Binder 机制进行进程间通信。下面我们就以分析 ContentProvider 工作流程为主来进行全面分析。原创 2022-04-18 21:36:22 · 2778 阅读 · 0 评论 -
Surface的理解
1Surface創建既然requestLayout内部是通过给主线程Handler发送任务消息并在Vsync同步信号返回后执行Runable。那我们就继续看看Runable内部执行的// ========== android.view.ViewRootImpl ===========void doTraversal() { if (mTraversalScheduled) { mTraversalScheduled = false; //移除同步屏障,.转载 2022-01-23 11:41:15 · 1119 阅读 · 0 评论 -
Android 源码分析 (十) 启动广播的发送和接收过程
广播的发送和接收过程广播的发送和接收分为 2 个阶段来分析,通过应用进程到 AMS SystemServer 进程的调用,然后 AMS 所在的进程通知应用进程的调用,下面我们先来分析应用程序进程到 AMSContextImpl 到 AMS 的调用过程广播发送多种类型的广播,比如 无序、有序、粘性广播,这里以最简单的广播无序广播来讲解,也就是发送一个普通广播,它的实现也是在 ContextWrapper 中直接来看 ContextWrapper 的 sendBroadcast 方法,代码如下:原创 2022-01-02 12:34:08 · 3063 阅读 · 0 评论 -
Android源码分析 (九) BroadcastReceiver 注册过程
广播的注册过程首先,想要使用广播就得通过 registerReceiver 方法注册一个广播,最终也是在 Activity 的父类 ContextWrapper 中实现,代码如下://ContextWrapper.java /** * 应用调用注册广播的函数 * @param receiver The BroadcastReceiver to handle the broadcast. * @param filter Selects the Intent broa原创 2022-01-02 11:37:53 · 1727 阅读 · 0 评论 -
Android 源码分析 (八) bindService 启动
bindService 绑定服务过程我们直接看 ContextWrapper 类中的 bindService 函数//ContextWrapper.javapublic class ContextWrapper extends Context { Context mBase; ... @Override public boolean bindService(Intent service, ServiceConnection conn, int原创 2021-11-14 19:30:40 · 2650 阅读 · 0 评论 -
Android 源码分析 (七) StartService 启动
startService 启动过程ContextImpl 到 AMS 的调用过程当我们在 Activity 中调用 startActivity 函数的时候,点击 startActivity 看源码实现会发现它是在 ContextWrapper 类中实现的。我们继续看 Context 的 startService 实现,代码如下://Context.javapublic abstract class Context { ... @Nullable public ab原创 2021-11-14 13:40:52 · 2382 阅读 · 0 评论 -
Android源码分析(六)Window添加
1 系统添加窗口添加的过程这里以我们常用的 Toast 来分析添加到 SystemWindow 中的过程 //Toast public static Toast makeText(@NonNull Context context, @Nullable Looper looper, @NonNull CharSequence text, @Duration int duration) { //1. 实例化 Toast 对象 Toast r..原创 2021-10-17 19:28:30 · 1297 阅读 · 0 评论 -
Androd的源码分析(五)WindowManager
Window:window 它是一个抽象类,具体实现类为 PhoneWindow ,它对 View 进行管理//Window.javapublic abstract class Window { ...}//PhoneWindow.javapublic class PhoneWindow extends Window implements MenuBuilder.Callback { ...}WindowManager 是一个接口类,继承自接口ViewManager,从它...原创 2021-10-17 10:31:20 · 896 阅读 · 0 评论 -
根Activity启动过程中涉及的进程
在Activity启动过程中间会涉及4个进程 分别是Zygote进程、Launcher进程、AMS所在进程(SystemServer进程)、应用进程。他们关系如下首先Launcher进程向AMS请求请求创建根Activity,AMS 判断根Activity 所需的应用进程是否存在并启动,如果不存在就会请求Zygote进程创建应用程序,应用程序进程启动后,AMS会请求创建应用程序进程并启动Activity .步驟2 采用的Socket通信 步骤1 和步骤4 采用的Binder通信 时序图可以总结如下.原创 2021-08-16 13:33:38 · 236 阅读 · 0 评论 -
Android 源码分析 (四) Activity 启动
Instrumentation 完成对Application和Activity初始化和生命周期调用的工具类。用来监控系统与应用的交互。ActivityThread 管理应用进程的主线程的执行。ApplicationThread 用来实现ActivityManagerService与ActivityThread之间的交互。在ActivityManagerService管理应用进程中的Activity时,通过ApplicationThread的代理对象与ActivityThread通...原创 2021-08-16 12:58:22 · 402 阅读 · 0 评论 -
setContentView源码分析
我们先来看一下Android中View视图在Activity中的整个层级关系:包含关系:Activity中有个成员变量Window,Window是个抽象类,它的实现类是PhoneWindow,PhoneWindow有一个成员变量DecorView.Phonewindow对象创建的开始入口:ActivityThread#handleLaunchActivity() ->ActivityThread#performLaunchActivity()开始创建PhoneWindow : perf原创 2021-07-22 09:24:21 · 306 阅读 · 3 评论 -
linux进程--进程间通信方式(一)
首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的理由是:因为一个进程的子进程可以多于一个,没有一个函数使一个进程可以获得其所有子进程的进程id。对子进程来说,之所以fork返回0给它,是因为它随时可以调用getpid()来获取自己的pid;也可以调用getppid()来获取父进程的id。(进程id .转载 2021-07-06 22:19:16 · 662 阅读 · 0 评论 -
Android 源码分析 (三) 应用程序启动的过程
启动过程启动过程可以分为两步: AMS 发送启动应用程序进程请求 AMS 如果想要启动应用程序进程,就需要向 Zygote 进程发送创建应用程序进程的请求,AMS 会通过调用 startProcessLocked 方法向 Zygote 进程发送请求。 Zygote 接收请求并创建应用程序进程 出处。...原创 2021-06-11 17:24:14 · 1471 阅读 · 0 评论 -
Android 源码分析 (二) Launcher 启动
在看进阶解密Launcher 启动过程,记录加深后续的理解记忆系统启动的最后一步时启动一个应用程序用来显示系统中已经安装的应用程序,这个应用程序就叫做Launcher。Launcher在启动过程中会请求PackageManagerService返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序。...原创 2021-06-02 22:10:54 · 718 阅读 · 4 评论 -
Android源码分析 (一) SystemServer 进程启动
最近学习进阶解密 总结SystemService启动Zygote进程启动总结在Android系统中,DVM和ART、应用程序进程以及运行系统的关键服务SystemServer进程都是有Zygote进程来创建的,我们也将它称为孵化器。它通过fork的形式来创建应用程序进程和SystemServer进程,犹豫Zygote进程在启动时会创建DVM或者ART,因此通过fork而创建的应用程序进程和SystemServer进程可以在内部获取一个DVM或者ART的实例副本。Zygote进程启动共做了如下几件.原创 2021-05-31 21:48:39 · 1711 阅读 · 8 评论