Android从头来一遍-01-架构概览

133 阅读4分钟

一个Android应用是如下结构 image.png

解剖一个Android应用

Android App开发与其他的类型App大不相同,接下来拆解一下结构

1、Android Activities

Android将组件的重用提高了一个层次,Android App创建包含一个或多个Activity,一个Activity是一个单独的、独立的应用程序功能模块,通常用于单屏幕用户交互。
Activity旨在于构建完全可重用、可交互的模块,可以在不同的应用程序间分享
Activity作为Android Activity的子类被创建,且必须被实现,确保完全独立于应用程序中其他的Activity
默认情况下,Activity不能向调用它自己的Activity返回结果,如果必须这么做Activity必须作为源Activity的子Activity。

2、Android Fragment

在开发中可以选择把一个Activity对应一个布局文件,更好的是把一个Activit分成多个功能,每一个功能作为一个Fragment,通过这些功能Fragment配合一个布局文件进行搭建。这种情况下,Fragment变得更简单,只作为存放Fragment的容器。
实际开发中,Fragment被作为更高效的替代去处理用户交互,一个Android App可以由一个单独的Activity包含多个Fragment,通过切换不同的Fragment,达到切换屏幕上不同的功能。

3、Android Intent

Intent是一种机制,一个Activity启动另一个Activity,并通过Activity组成的应用程序实现流。Intent的组成是由一系列的操作的描述,和操作依赖的数据源(可以是可选的)组成。
Intent可以是显式的,因为可以通过请求直接使用类名引用的Activity,也可以是隐式的通过声明的操作或者提供的数据源的类型,确定是哪个操作要被执行,Android运行时会选择最接近Activity去运行,这个最接近的匹配机制被称为Intent Resolution(意图决策)

4、Broadcast Intent

广播意图Broadcast Intent,是意图系统中的一个类型的意图,用于发送App中注册好的Intent给广播接收者

5、Broadcast Receivers

广播接收者Broadcast Receivers是用于响应App的广播意图Broadcast Intent的机制,一个广播接收者必须由App注册,并且要设置一个意图过滤器去过滤指定的广播。当一个意图被广播,接收者都会被Android运行时唤醒,无论App中注册的接收者是否正在运行。
在返回之前,接收者有5秒的时间去完成需要做的任务,广播接收者在后台进行操作,没有给程序员提供接口。

6、Android服务

Android 服务是运行在后台并且不提供给程序员接口的的进程。他们能够被启动然后被Activity管理。
Android 服务是一种理想的方式去处理App需要继续执行任务,但不必要提供接口给用户显示。尽管服务缺乏接口,但仍然可以通知用户使用通知和toast弹窗。
服务被 Android 运行时给予了比其他许多线程更高的优先级,只有在系统释放资源时才会被终止。
如果 Android 运行时确定需要终止服务,它会在合适的时候自动重启

7、Content Providers

Content Providers 是一种用于实现应用间数据的分享机制,任何应用程序能通过使用Content Providers机制像其他应用程序提供访问底层数据的能力,如添加、删除和请求数据(取决于权限)
源生Android应用提供了一系列标准的Content Providers允许应用程序访问数据,如联系人和媒体文件 再 Android 中可以使用Content Resolver 定位Content Provider

8、Application Manifest

Application Manifest文件会把应用程序的各种元素放到一起
xml格式文件存储Activity、Service、广播接收者、data provider和权限信息

9、应用上下文

当一个应用程序被编译了,一个包含应用程序资源的引用名叫R的类被创建
应用程序清单文件application manifes和资源文件组合创建出应用程序上下文
这个上下文有 Android Context类表示,可以在代码中使用,用于运行时访问应用程序资源 除此之外一系列方法需要在应用程序上下文中被调用去收集信息并在运行时改变应用程序的环境