六木Sir

Results 100 issues of 六木Sir

# Android组件管理框架:Android应用上下文Context **文章目录** - 一 Context与四大组件的关系 - 1.1 Activity的创建流程 - 1.2 Service的创建流程 - 1.3 静态广播的创建流程 - 1.4 Content Provider的创建流程 - 1.5 Application的创建流程 - 二 Context的创建流程 - 2.1 Activity Context的创建流程 -...

Android

# Android组件管理框架:Android后台服务Service 本篇文章开始来分析Service相关原理,Service在开发中使用的相对较少,它主要用来处理后台任务。我们来看看官方对它的定义,如下所示: > Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互, 而所有这一切均可在后台进行。 Service从使用方式上可以分为两种,如下所示: - startService() > 当应用组件(如 Activity)通过调用 startService() 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也 不受影响。 已启动的服务通常是执行单一操作,而且不会将结果返回给调用方。例如,它可能通过网络下载或上传文件。 操作完成后,服务会自行停止运行。 - bindService() > 当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚 至是利用进程间通信...

Android

# Android组件管理框架:Android视图片段Fragment **文章目录** - 一 Fragment管理流程 - 二 Fragment生命周期 - 三 Fragment回退栈 >A Fragment is a piece of an application's user interface or behavior that can be placed in an...

Android

# Android组件管理框架:Android视图容器Activity **文章目录** - 一 Activity的启动流程 - 二 Activity的回退栈 - 三 Activity的生命周期 - 四 Activity的启动模式 - 五 Activity的通信方式 本篇文章我们来分析Android的视图容器Activity,Android源码分析系列的文章终于写到了Activity,这个我们最常用,源码也最复杂的一个组件,之前在网上看到过很多关于Activity源码 分析的文章,这些文章写得都挺好,它们往往是从Activity启动流程这个角度出发,一个一个函数的去分析整个流程。但是这种做法会让文章通篇看去全是源码,而且会让读者产生一个疑问:这么 长的流程,我该如何掌握,掌握了之后有有什么意义吗?🤔 事实上,单纯去分析流程,确实看不出有什么实践意义,因此我们最好能带着日常开发遇到的问题去看源码,例如特殊场景下的生命周期是怎么变化的,为什么会出现ANR,不同启动模式下对Activity 入栈出栈有何影响等。我们带着问题去看看源码里是怎么写的,这样更有目的性,不至于迷失在茫茫多的源码中。 好了,闲话不多说,我们开始吧。😁 Activity作为Android最为常用的组件,它的复杂程度是不言而喻的。当我们点击一个应用的图标,应用的LancherActivity(MainActivity)开始启动,启动请求以一种IPC的方式传入AMS,AMS开始 处理启动请求,伴随着Intent与Flag的解析和Activity栈的进出,Activity的生命周期从onCreate()方法开始变化,最终将界面呈现在用户的面前。 Activity的复杂性主要体现在两个方面: - 复杂的启动流程,超长的函数调用链。 -...

Android

# Android组件管理框架:Android组件管理服务ActivityServiceManager **文章目录** - 一 组件管家ActivityManagerService - 1.1 ActivityManagerService启动流程 - 1.1 ActivityManagerService工作流程 - 二 应用主线程ActivityThread - 2.1 ActivityThread启动流程 - 2.2 ActivityThread工作 ActivityManagerService是贯穿Android系统组件的核心服务,在ServiceServer执行run()方法的时候被创建,运行在独立的线程中,负责Activity、Service、BroadcastReceiver的启动、切换、调度以及应用进程的管理和调度工作。 Activity、Service、BroadcastReceiver的启动、切换、调度都有着相似的流程,我们来看一下。 Activity的启动流程图(放大可查看)如下所示: 主要角色有: - Instrumentation: 监控应用与系统相关的交互行为。 - AMS:组件管理调度中心,什么都不干,但是什么都管。...

Android

# Android组件管理框架:Android组件管理框架概述 从这篇文章开始,我们正式开始去系统地分析Activity源码、原理、启动模式与启动流程等方面内容。这一系列文章可能是东半球最全面(捂脸:>逃~)的讲解Activity的文章。 ## 继承体系 [点击查看高清SVG大图](https://github.com/qmsggg/android-open-source-project-analysis/blob/master/art/app/component/UMLClassDiagram-app-ActivityGroup.png) 我们来介绍下上图中主要的类 - Context:抽象类,应用的全局运行环境。 - ContextWrapper:继承于Context,Context的代理类。ContextWrapper里的方法都最终调用Context里的方法来实现。 - ContextThemeWrapper:继承于ContextWrapper,可以进行主题修改。 - Activity:继承于ContextThemeWrapper,展示在用户面前的类,绘制UI,处理用户交互。 - ActivityGroup:继承于Activity,一个屏幕可以包含多个Activity。 ## 内部结构 我们再来看看在Activity提供各种功能的内部模块。 - Instrumentation - IBinder - ActivityInfo - ActivityThread - SearchManager...

Android

# Android显示框架:Activity应用视图的创建流程 **文章目录** - 一 创建Context对象 - 二 创建Window对象 - 三 创建View对象 - 四 创建WindowState对象 - 五 创建Surface对象 Android应用在运行的过程中需要访问一些特定的资源和类,这些特定的资源或者类构成了Android应用运行的上下文环境,即Context。Context是一个抽象类,ContextImpl继承了Context, 并实现它的抽象方法。 因此,每个Activity组件关联的是ContextImpl对象,它们的类图关系如下: Context家族相关类采用装饰模式设计而成,ContextWrapper与ContextThemeWrapper继承于Context,是它的包装类,用于完成更多的功能。ContextWrapper与ContextThemeWrapper背部都通过 成员变量mBasae引用了一个ContextImpl对象,Activity正是通过这个ContextImpl对象执行一些具体的操作,例如:启动Activity、启动Service等。 ```java Context mBase; public ContextWrapper(Context base) {...

Android