![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android Frameworks
简述Frameworks下的系统级服务以及常见的问题
adroid_newbie
路漫漫其修远兮,吾将上下而求索
展开
-
WindowManagerService第四讲之Wms简述
一.Wms的介绍前面三讲主要多涉及的是有关window的概念。这讲我们主要介绍WindowManagerService。众所周知Wms是windowManager的管理者,其实他还有其他重要的职责。WMS的主要的职责是:1.保持窗口的层级关系,以便SurfaceFlinger能够据此绘制屏幕;2.把窗口信息传递给InputManager对象,以便InputDispatcher能够把输入消息...原创 2020-03-10 16:26:18 · 1668 阅读 · 4 评论 -
WindowManagerService第三讲之Window的创建
在第一讲中我们知道,系统按照Window的type分为:应用窗口、子窗口、系统窗口。我们分别以其中的情况来1.Activity的Window创建在WMS系列第一讲中介绍PhoneWindow的时候,我们有介绍PhoneWindow的创建时机是在ActivityThread中调用attach()方法初始化Activity。这个时候Activity中就创建了Window对象。接下来就需要在窗口中...原创 2020-03-03 17:12:27 · 237 阅读 · 0 评论 -
WindowManagerService第二讲之Window的操作
在第一讲的时候我们说WindowManager类继承于ViewManager,ViewManager是一个接口类。实现了三个方法,对应的分别是窗口的添加、更新、删除。我们下面对于这三个Window的操作流程来详述。1.Window的添加A.ViewManager#addViewpublic interface ViewManager{ /** * Assign the ...原创 2020-02-28 16:14:26 · 753 阅读 · 0 评论 -
WindowManagerService第一讲之WMS基础知识
一.初识Window1.窗口的定义”窗口“的概念在Android中我们可以理解为一个独立的界面,比如说一个对话框窗口、一个菜单窗口、一个Activity界面窗口等。Window在Android中是一个抽象类,该抽象类的唯一实现类是PhoneWindow。View在Android中也是一个类,简单的理解成视图,比如说界面中的button、textview等。Window对View会进行管理...原创 2020-02-26 17:52:45 · 981 阅读 · 0 评论 -
ActivityManagerService第六讲之AMS架构
一.Activity的系统架构从第一讲的Activity启动流程中我们知道,系统层级是通过Context来调用startActivity,最终实现是在AMS中。而系统进程通过zygote的fork&run 出的ActivityThread来接受从AMS中发出来的消息并处理。Activity的架构如下:1.ActivityThreadmain()函数是ActivityThread的...原创 2020-02-25 22:50:20 · 1056 阅读 · 0 评论 -
ActivityManagerService第五讲之ActivityManagerService的启动过程
一.AMS的启动如果熟悉android系统启动流程的话,我们知道Zygote启动的时候会在ZygoteInit中fork一个名为system_server的过程。而SystemServer进程启动过程中会启动各种系统服务,系统服务中包含引导服务,而ActivityManagerService就是在这个时候被启动的。二.AMS启动流程我们从SystemServer的run()方法为开始。1....原创 2020-02-24 11:25:01 · 486 阅读 · 0 评论 -
ActivityManagerService第四讲之ContentProvider启动流程
一.ContentProvider的启动流程应用进程的启动最终会调用ActivityThread的main()方法上,我们从这个方法开始看。(注意:ContentProvider的onCreate方法会早于Application的onCreate方法执行的)1.ActivityThread#main public static void main(String[] args) { ...原创 2020-02-20 19:04:11 · 206 阅读 · 0 评论 -
ActivityManagerService第三讲之Broadcast Receiver工作流程
一.Broadcast Receiver工作流程1.注册Broadcast Receiver分为静态注册(在AndroidManifest.xml中)和 动态注册(在代码中调用registerReceiver()方法)2.动态注册Broadcast Receiver我们讲一下动态注册广播的流程。先从ContextWrapper的registerReceiver()方法开始A.Contex...原创 2020-02-17 18:01:05 · 579 阅读 · 0 评论 -
ActivityManagerService第二讲之Service启动流程
一.Service启动流程我们启动一个Service的时候一般是通过调用startService()方法或者bindService()方法。我们分别来看下这两个方法的流程。1.startService我们首先会在Activity调用startService()方法。可以看到Activity类中并没有startService()方法的实现;接着看他的父类ContextThemeWrapper,...原创 2020-02-14 16:35:29 · 836 阅读 · 0 评论 -
ActivityManagerService第一讲之Activity启动流程
一.Activity启动简述我们从Launcher启动某个应用,本质上就是Activity的启动。我们下面简单的讲述一下整个流程。此处流程是基于Android-10源码。二.Activity启动流程该流程是基于根Activity启动的,也就是我从桌面中点击应用图标开始的。1.Activity#startActivity 传入参数为intent和Bundle。最终都是调用startAct...原创 2020-02-13 11:52:34 · 1943 阅读 · 0 评论 -
Android Frameworks专栏简介
一.专栏的目的这个专栏全部是涉及Frameworks层的内容。主要讲一些常用的系统级服务,比如ActivityManagerService、WindowManagerService、PackageManagerService等。即是对自己技术的总结,也是和其他同仁进行技术分享。如果大家有什么想法或者觉得哪里写的有问题,欢迎及时的提出,一定第一时间进行改正。二.专栏的形式主要涉及代码上流程的...原创 2020-01-16 23:42:59 · 288 阅读 · 0 评论 -
PowerManagerService第五讲之常见问题
1.唤醒问题 通常按Power key去亮屏,会产生两种结果:一个是能亮起来,但是时间长;另一个是无法点亮。亮屏慢的问题更关注的是各个阶段的时间,找到哪一个时间最长后,进一步分析耗时长的阶段;无法亮屏的问题需要去确认是走到哪个阶段了。 一般的流程上是:底层把power key传到上层 --> PowerManagerService处理 -->初始化keyguard/唤醒底层 -...原创 2020-01-12 10:02:59 · 1083 阅读 · 0 评论 -
PowerManagerService第四讲之亮屏
一.亮屏 在上面讲解PSensor灭屏的时候其实已经有涉及到关于亮屏的相关知识。当灭屏之后WakeLock就不会被进程所持有,因此如果需要点亮屏幕,就需要去申请WakeLock。我们以最简单的按Power键亮屏来讲述1.Power键亮屏按下Power键的时候,down值为true,就会执行到interceptPowerKeyDown方法: private void inter...原创 2020-01-12 09:52:13 · 570 阅读 · 0 评论 -
PowerManagerService第三讲之灭屏
一.灭屏简述先来讲灭屏,灭屏的方式一般有如下几种:1.用户按Power键灭屏;2.手机自动放置一段时间后超时灭屏;3.Sensor灭屏。灭屏的原因在PowerManager类中的sleepReasonToString方法有列出常见的: /** * @hide */ public static String sleepReasonToString(int...原创 2020-01-12 09:36:46 · 1733 阅读 · 1 评论 -
PowerManagerService第二讲之WakeLock
WakeLock是一种锁机制,只要有进程持有这个锁,CPU就一直在工作,系统就不会进入到休眠状态。关于WakeLock的使用方法其实在PowerManager类中的注释已经给出了,来看描述: /** * This class gives you control of the power state of the device. * * <p> ...原创 2019-11-12 01:46:10 · 596 阅读 · 0 评论 -
PowerManagerService第一讲之初始化
一.简介PowerManagerService是负责Android系统中的电源管理方面的一个系统服务。与其他服务以及Hal层都有交互关系。二.PowerManager初始化如果对Android系统启动有一些了解的话,应该知道SystemServer启动之后会启动系统服务,其中就有PowerManagerService。1.启动PowerManagerServiceA.PowerManag...原创 2019-11-12 01:34:27 · 544 阅读 · 0 评论