# 标签

AOSP

共 67 篇文章

Android

理解WindowManager

理解WindowManagerWindowManager类顾名思义就是用来管理Window类。Window在另外一篇有探究理解Window。1、WindowManagerWindowManager也是接口,继承自ViewManager接口,它的实现类是WindowManagerImpl。都在android.view包中。1.1、ViewManagerViewManager接口中只定义了三个接口方法

2.3k
理解Window
Android

理解Window

理解Window什么是Window?从Activity的组成结构一文中我们了解到:每个Activity都包含一个Window。1、Window什么是Window?简单来说就是窗口,对其中的View进行管理。那么Window和Activity又有什么关系?现在来梳理并了解一下它们之间的关系。1.1、Window是抽象类Android中能看见的(比如:Activity、Dialog、Toast等)都是

1.9k
Android

AMS服务的启动

AMS服务的启动Android开发是不是经常听说过AMS,什么是AMS?其实指的就是ActivityManagerService和一些关联的类,对系统运行时的Activity进行管理。以Android Q的源码开始阅读,了解AMS的启动过程,会发现不再由ActivityManagerService,而是由重构之后ActivityTaskManagerService类来启动管理Activity。1、

2.4k
各种Context及其初始化流程
Android

各种Context及其初始化流程

各种Context及其初始化流程Context在Android开发中实在是太重要的,用到的地方数不胜数。开发过程中没有Context是万万不能的,给人感觉Context简直是“万能”的。因为总有一些地方会用到Context,可以通过传参的方式传入;但是有些又没法通过传参传入,这时候可以使用全局ApplicationContext的方式获取到一个Context(见《如何获取全局Context?》)。

2.5k
Android

Binder线程池的启动

Binder线程池的启动Binder线程池在Android是一个非常重要的技术,访问其它应用ContentProvider的,应用进程和系统服务之间的通信等操作在服务端是运行在Binder线程池中的。Binder线程池是一个比较底层的概念,关于Binder的代码在native层中:../frameworks/native/libs/binder接着APP进程的启动(见:APP进程启动流程),在Zy

2.3k
Android

APP进程启动流程

APP进程启动流程当用户点击桌面上的APP图标打开一个应用,这中间发生了什么?桌面通过Intent启动APP之后系统做了哪些?Android系统做了非常复杂的操作。从全局流程上简化来看,在上次分析的Zyoget进程的启动流程中,了解到通过AMS发送启动应用的请求,Zygote服务端接收到请求后,fork自己创建应用程序进程。1、启动APP点击桌面上的图标启动应用的时候和通过Intent启动Acti

2.6k
Android

Launcher加载APP图标流程

Launcher加载APP图标流程前段时间看了桌面Launcher的启动流程《安卓桌面Launcher的启动》,但是还没完,桌面也是一个安卓应用且涉及到的面很广,光是桌面这个模块就需要一个团队维护开发。AOSP Launcher源码:Launcher3大牛维护的Launcher代码:fookwood/Launcher31、Launcher.onCreate()接着Launcher的启动,通过Int

2.7k
Android

Android桌面Launcher3的启动

Android桌面Launcher3的启动SystemServer启动会在startBootstrapServices()方法中启动引导带服务,其中就包括PackageManagerService(这里判断了手机是否是工厂模式)。而包管理服务和接下来要分析的Launcher启动有很大关系。SystemServer启动流程参考《SystemServer系统服务启动》。startOtherServic

3.0k
SystemServer系统服务启动
Android

SystemServer系统服务启动

SystemServer系统服务启动SystemServer进程用来在创建系统服务,比如AMS、WMS、PMS等。熟悉一下Android系统服务的启动流程。总的启动时序图如下:接着《Zyoget进程的启动》,同样在ZygoteInit的main方法中:调用Runnable forkSystemServer(String abiList, String socketName,ZygoteServer

1.8k
Android

Zygote进程的启动

Zygote进程的启动Android系统中有三个关键进程:init进程、SystemServer进程和Zygote进程。Zygote是系统运行的第一个Dalvik虚拟机进程,且负责孵化开启其它的APP应用进程。Zygote进程是由Linux内核启动的用户级init进程启动,现在就来了解一下Zygote进程的启动流程。至于Linux进程0、内核进程是如何启动的这里不深入讨论,参考计算机专业的书籍《L

2.2k
Android

HandlerThread源码的实现

HandlerThread源码的实现HandlerThread继承自Thread,和普通线程一样,只不过HandlerThread有自己的Looper,线程启动之后可以用HandlerThread中的Looper创建Handler,向Handler发送消息,将任务放到线程中执行。比如熟悉的IntentService,内部就是借助HandlerThread在子线程中执行onHandleIntent(

1.7k
IntentService原理
Android

IntentService原理

IntentService原理之前记录了一篇IntentService 的使用(参考IntentService使用详解),没有详细对IntentService的实现原理进行深入颇析。正好阅读Android源码,对一些实现原理进行深入的了解。先介绍一下IntentService中两个重要的成员变量:mServiceLooper和mServiceHandler。在IntentService初始化的时候

1.7k
Android

源码颇析AsyncTask工作原理

源码颇析AsyncTask工作原理Android开发中经常会用到AsyncTask开启异步任务,后台执行耗时操作,具体用法参考《AsyncTask:异步任务》。现在从源码来看看AsyncTask的实现机制。1、AsyncTask中的线程池AsyncTask中封装了两种Executor,一个是顺序执行的SERIAL_EXECUTOR,另一个是并发执行的THREAD_POOL_EXECUTOR。1.1

1.8k
Android

Thread和ThreadLocal

Thread和ThreadLocal Handler获取当前线程的 Looper 对象,而每一个线程的 Looper 是不一样。每一个线程都有一个 Looper 对象,使用 ThradLocal 去保存和获取当前线程的 Looper 是最佳的选择。Android中Handler、Looper消息机制得益于巧妙的运用了ThreadLocal的特性,关于Handler机制参考Handler、Loope

1.9k
Handler、Looper、MessageQueue消息机制原理
Android

Handler、Looper、MessageQueue消息机制原理

Handler、Looper、MessageQueue消息机制原理Android消息机制是安卓开发中非常重要的,在子线程中处理完I/O、网络请求,使用Handler切回到主线程处理。1、LooperAndroid Looper设计的非常巧妙,使用ThreadLocal实现这个特性。关于ThreadLocal参考另外一篇Thread和ThreadLocal。1.1、主线程Looper一个Applic

1.9k