前言:百度一搜能找到很多讲APP启动流程的,但是往往要么就是太老旧(还是基于android6去分析的),要么就是不全(往往只讲了整个流程的一小部分)。所以我结合网上现有的文章,以及源码的阅读和调试,耗费了3整天的时间,力求写出一篇最完整,最详细,最通俗易懂的文章,来讲清楚在android上,APP是如何启动的。 该文属于安卓源码探究专栏中的文章,专栏中很多类似源码分析的文章,欢迎大家阅读
文章目录第1章 走向灵活软件之路——面向对象的六大原则 1第2章 应用最广的模式——单例模式 23第3章 自由扩展你的项目——Builder模式 43第4章 使程序运行更高效——原型模式 66第5章 应用最广泛的模式——工厂方法模式 87第6章 创建型设计模式——抽象工厂模式 106第7章 时势造英雄——策略模式 117第8章 随遇而安——状态模式 145第9章 使编程更有灵活性——责任链模式 165第10章 化繁为简的翻译机——解释器模式 182第11章 让程序畅通执行——命令模式 204第12章 解决、
在浅析Android View内部工作原理及其实战 文章中,我们简单介绍了Android View工作原理中的UI界面架构和View绘制流程,目的在于先给大家有个大概的了解,方便后面的学习。接下来,我们将从源码的角度来分析(1)中提到的内容,为了避免文章过长,关于View工作原理的源码剖析分为两篇文章,也就是两个部分:UI界面架构和View绘制流程,本文先讲解第一部分-UI界面架构原理。  从A
本文其实是第七篇的续篇,第七篇主要讲解Activity的绘制流程,本文主要讲解View本身是如何绘制的,即UI的绘制流程。花了几个小时的源码分析,最终确认,UI实际上从Activity的onResume之后才真正开始绘制,或者说,UI绘制的入口是ActivityThread类中的handleResumeActivity方法。源码如下:@Override public void handleResu
转载 10月前
64阅读
2.8 无名英雄——深入理解LayoutInflaterLayoutInflater在我们的开发中扮演着重要的角色,但很多时候我们都不知道它的重要性,因为它的重要性被隐藏在了Activity、Fragment等组件的光环之下。LayoutInflater是一个抽象类,具体代码如下:public abstract class LayoutInflater { // 代码省略 }既然是抽象不是
Android设计模式源码解析之桥接模式.PDFAndroid设计模式源码解析之桥接模式本文为 Android 设计模式源码解析 中 桥接模式 分析Android系统版本: 4.2分析者:shen0834 ,分析状态:未完成,校对者:Mr.Simple,校对状态:完成模式介绍模式 定义将抽象部分实现部分分离,使它们都可以独立 变化。模式 使用场景如果一个系统需要在构件 抽象化角色和具体化角色之间
断断续续的,《Android源码设计模式解析》也看了一遍,书中提到了很多的设计模式,但是有部分在开发中见到的几率很小,所以掌握不了也没有太大影响。我觉得这本书的最大价值有两点,一个是从设计模式的角度去理解Android源码,结合着日常开发中的常用类,对设计模式的理解会更加的深刻;另外一个好处就是了解常用模式,再看其他人写的代码的时候,更容易理解代码思路。下面是我的读书笔记和一些思考,设计模式只整理
大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开。这样的需求要怎么实现呢?上网查了一些资料,发现了一个很好用PDF开源库。使用起来也很简单,首先添加PDFView的引用 compile 'com.github.barteksc:android-pdf-viewer:2.4.0
转载 2023-07-30 23:14:24
130阅读
一、Activity相关为什么下边不睡眠可以设置setText(),添加 睡眠1秒就抛出异常?看下面代码:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreat
转载 2023-09-28 10:25:40
156阅读
作者:奔跑中的蜗牛666装饰者模式动态地给一个对象添加一些额外
转载 2021-12-10 13:48:24
155阅读
作者:奔跑中的蜗牛666装饰者模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。在架构设计时,应多用组合
转载 2022-01-24 11:41:49
79阅读
模式介绍 模式的定义 将抽象部分实现部分分离,使它们都可以独立的变化。 模式的使用场景 如果一个系统需要在构件的抽象化角色和具体化角色之间添加更多的灵活性,避免在两个层次之间建立静态的联系。 设计要求实现化角色的任何改变不应当影响客户端,或者实现化角色的改变对客户端是完全透明的。 需要跨越多个平台
原创 2021-12-16 12:54:39
211阅读
1. 模式介绍1.1模式的定义:  确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。1.2模式的使用场景:  确保某个类有且只有一个对象的场景,例如创建一个对象需要消耗的资源过多,如要访问 IO 和数据库等资源。如:我们使用的第三方框架(com.nostra13.universalimageloader) 2.模式的简单实现1.1简单实现的介绍:
原创 2021-09-07 17:46:11
129阅读
Java学习之工作中常用设计模式举例策略模式业务场景实现样例责任链模式业务场景实现样例模板方法模式业务场景实现样例观察者模式业务场景实现样例工厂模式实现样例单例模式业务场景实现样例饿汉模式双重校验锁静态内部类枚举参考链接 策略模式概念策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的的客户。策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类
转载 2023-06-20 01:20:40
89阅读
# Redis 源码解析实战 ## 简介 Redis 是一个开源的高性能、基于内存的NoSQL数据库,主要用于缓存、队列和实时数据处理。本文将从源码解析实战两个方面,介绍 Redis 的原理和应用。 ## 源码解析 ### 数据结构 Redis 中主要使用了五种数据结构:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Zset)。其中,哈希表是
原创 5月前
35阅读
第十四章、迭代器模式 迭代器模式,又叫做游标模式。是行为型设计模式之中的一个。我们知道对容器对象的訪问必定会涉及遍历算法。我们能够将遍历的方法封装在容器中,或者不提供遍历方法,让使用容器的人自己去实现去吧。这两种情况好像都能够解决这个问题。 然而在前一种情况。容器承受了过多的功能。它不仅要负责自己“
转载 2017-06-18 19:35:00
43阅读
2评论
本文章以读《Android源码设计模式》后做下简记。单例模式介绍单例模式可谓是都会用到的一个设计模式。单例顾名思义只有一个实例。就像规定任何时候你只能有一个老婆或直接没有老婆一样(都是泪)。Android中的LayoutInflater则使用的单例来进行访问。UML使用场景是在全局下,需要只有该类一个实例,避免产生多个对象消耗过多的资源,如访问IO或者数据库等资源的对象。这样访问该类中变量也是唯一
第十七章、中介者模式 中介者模式也称为调解者模式或调停者模式,是一种行为型模式。 1.定义 中介者模式包装了一系列对象相互作用的方式。使得这些对象不必相互明显作用。从而使它们能够松散耦合。当某些对象之间的作用发生改变时。不会马上影响其它的一些对象之间的作用。保证这些作用能够彼此独立的变化。 2.使用
转载 2017-08-15 13:41:00
74阅读
第八章、状态模式 1.定义 状态模式中的行为是由状态来决定,不同的状态下有不同的行为。当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类。 2.使用场景 1.一个对象的行为取决于它的状态,而且它必须在执行时依据状态改变它的行为。 2.代码中包括大量对象状态有关的条件语句,比如,
转载 2017-06-29 12:11:00
100阅读
2评论
第十八章、代理模式 代理模式也称托付模式,是结构型设计模式之中的一个。是应用广泛的模式之中的一个。 1.定义 为其它对象提供一种代理以控制对这个对象的訪问。 2.使用场景 当无法或不想直接訪问某个对象或訪问某个对象存在困难时能够通过一个代理对象来间接訪问,为了保证client使用的透明性。托付对象
转载 2017-07-04 16:53:00
28阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5