源码分析
文章平均质量分 95
ZhipengJuly
这个作者很懒,什么都没留下…
展开
-
PackageManagerService原理之启动篇
PackageManagerService属于Android framework中很重要的一个模块,应用安装、卸载、Intent的匹配、package的解析等都和它有关。下面从PackageManagerService的启动和在Context中获取PackageManager对象理一理整个过程。 本文是基于Android10源码分析,其他版本可能有细微的差异,但是总体流程相差无几。涉及到的类有:frameworks/base/services/java/com/android/server/Syst.原创 2022-02-28 22:00:00 · 3083 阅读 · 2 评论 -
Glide源码分析——资源加载和显示
在上一篇文章中讲到Glide是如何通过RequestManager来管理资源加载请求,这篇文章就来看下资源加载请求执行和资源加载完成后显示的具体过程《Glide源码分析——Request管理》《Glide源码分析——开篇》文章目录资源获取创建获取资源请求运行资源获取请求从内存缓存中获取图片资源从磁盘或者原始地址获取资源资源显示资源获取资源获取的整体流程如下:整个过程可概括为:创建RequestBuilder,然后根据要显示在的目标和配置创建获取资源的请求(Request)运行资源获取.原创 2022-01-12 20:37:08 · 1861 阅读 · 0 评论 -
一文读懂ActivityThread
ActivityThread是什么,是主线程吗?它是如何被创建的,以及它的作用又是什么呢?带着这些问题,我们一起来分析下ActivityThread。全文分为以下几个部分,大家可根据需求阅读文章目录ActivityThread是什么ActivityThread对象如何被创建的system_server进程App进程ActivityThread的作用进程ActivityServiceBroadcastReceiverContentProvider总结ActivityThread是什么Activit.原创 2021-10-21 20:57:59 · 5939 阅读 · 0 评论 -
ActivityManagerService启动与基本功能
ActivityManagerService作为Android系统中的重要的系统服务之一,我们有必要来了解下。这篇文章就跟大家一起分析下它的创建、启动过程以及它的基本作用。 如果大家看过前面的《Android App进程创建过程分析》、《Android Activity启动过程分析》两篇文章,想必对ActivityManagerService(后面我们简称AMS)不会陌生,进程创建和Activity启动都有涉及到AMS。但是AMS又不只这些功能,下面我们就来了解下它的创建、启动过程以及它的基本功能。.原创 2021-09-18 17:47:36 · 1563 阅读 · 0 评论 -
Android App进程创建过程分析
在分析Activity启动的文章《Android Activity启动过程分析》中,我们遗留了一个小尾巴——App冷启动的情况下,当时没有讲解进程创建的过程,现在我们就把这个尾巴接上,一起看看Android中App进程创建的过程(本文分析过程是基于Android Q源码)。 先给结论:在Android系统中创建App进程是由zygote进程负责创建的;在一个App种冷启动另一个App,首先会经由system_server进程种的ActivityManagerSrevice生成创建进程的请求,创建进程的.原创 2021-08-21 19:32:48 · 2207 阅读 · 4 评论 -
Android Activity启动过程分析
当我们在一个Activity中(或通过Context对象),调用startActivity()方法来启动另一个Activity的工程中发发生了什么呢?这就是本文想跟大家分享的内容,我们一起通过源码的方式来看下Activity的启动过程(本文是基于Android Q源码)。 启动Activity的流程大体分为两步:找到要启动的Activity;然后启动它。(虽说有点像如何把大象装进冰箱,但也确实是那么回事,只不过每个步骤有更多细节)找到Activity 要想启动一个Activity,系统先要找到这个.原创 2021-08-06 13:43:18 · 3025 阅读 · 0 评论 -
Android系统启动之SystemServer(二)
在前面的《Android系统启动之SystemServer(一)》的博客中,我们了解到SystemServer.main()方法是如何被调用的,至于在mai n()方法中又做了哪些事情并没有阐述说明,那么这篇博客我们就来了解下SystemServer.main()主要都做了啥。 SystemServer.main()方法主要完成了以下几项工作设置系统属性和初始化环境创建SystemServerManager对象,并添加到LocalService启动服务 我们先看下SystemServer.原创 2020-09-01 10:42:05 · 473 阅读 · 0 评论 -
Android系统启动之SystemServer(一)
在《Android系统启动之Zygote》的中,我们知道SystemServer进程(进程名为system_server)是由Zygote进程fork出来的,但当时并没有说明SystemServer.main()方法是怎样被调用的,说到这里不知道大家有没有想过一个问题,我们在写一个Android demo应用的时候,为什么都没见过main()方法,而在写一个java demo时就要实现main()方法。这个问题大家可以想一想,以后有机会再讲解。那么还是回归正题,这篇文章我们还是来了解下SystemServ.原创 2020-08-05 22:21:37 · 1254 阅读 · 0 评论 -
Android系统启动之Zygote
前段时间在看Android9.0的PackageManagerService的源码,看着看着就在想PackageManagerService是如何被启动的,发现它是被SystemServer启动的,然后就又想SystemServer又是怎么被创建的呢,就一步步跟代码,发现SystemServer是从zygote进程fork出来的,想把最近了解的内容总结下,于是就有了这篇文章(如果再跟下去你会发现zygote又是从init进程fork出来的)zygote 是什么简单地说,它是一个进程。如果稍微再详细点.原创 2020-07-31 22:36:51 · 679 阅读 · 0 评论 -
深入理解SharedPrefences实现原理
SharedPreferences作为Android常用的持久化组件,很常用,在系统设置应用中就大量地被使用。相信大家基本都是用过,但是在使用过程中,大家是否又知道它的实现原理呢?基本使用 SharedPreferences使用很简单,比如我们要它保存某个字符串,在Activity使用如下:/** * save number * @param num */private void...原创 2020-04-19 18:03:48 · 992 阅读 · 0 评论 -
深入理解Android 消息机制(一)——综述
在日常开发和学习中,我们肯定都会接触到Android消息机制。我们知道,在非UI线程中不能直接更新UI,一般我们都是在非UI线程中通过Handler发送一条消息来更新UI。通过Handler可以将任务切换到Handler所在的线程中。Android消息机制主要是指Handler的运行机制,Handler的运行需要和MessageQueue和Looper配合才能完成。可能有人会问:我在Activity原创 2016-06-25 23:38:33 · 786 阅读 · 0 评论 -
深入理解Java ThreadLocal
欢迎转载,转载请注明出处:深入理解Java ThreadLocal!一、定义我们知道多线程环境下访问共享资源的会产生冲突,一般情况下我们可以通过锁机制来限定单个线程访问共享资源,让其他线程等待,但是这种方式会导致阻塞。避免多线程对共享资源访问产生的冲突的根本解决方式就是不共享。Java提供了一种叫做ThreadLocal类,我们称它为线程本地存储,从名称上我们就能看出它不是线程,而是一个存储变量的类原创 2016-05-29 20:11:52 · 655 阅读 · 0 评论 -
Java集合ArrayList实现原理——源码分析
一,ArrayList简述 ArrayList是实现了List接口的动态数组,动态数组是指它的大小是可变的。ArrayList实现了所有可选列表操作,并允许保存包括null在内的所有元素。ArrayList除了实现List接口,还提供了操作是内部用来存储列表的数组的大小的方法。 每个ArrayList实例都有一个容量(capacity),该容量是用来表示存储元素的数原创 2016-04-27 17:30:13 · 744 阅读 · 0 评论