Android Application
Android应用可以通过Kotlin、Java和C++进行编写,最后通过SDK工具包联通代码和资源文件变异成apk归档包;
每个Android应用存在于单独的沙盒中,每一个进程拥有一个单独的虚拟机,系统将会根据生命周期和内存情况进行调度;
*如果想要实现应用之间共享数据,可以安排两个应用共享同一 Linux user ID ,为节省系统之源,也可以安排相同Linux User Id的应用在同一个Linux进程中运行,通向同一个虚拟机VM。
四大组件
Android 系统的独特之处在于,任何应用都可以启动其他应用的组件。因此当系统启动某个组件时会唤起该应用的进程,Android应用没有单个的入口点(即main函数)。
- Activity 是与用户交互的UI 入口;每个Activity都是独立的,甚至可以由其他应用启动;我们常见的能看到的东西都在Activity中。
-
Service 是用于应用在后台保持运行的组件,不包含界面;即使应用退出了依然可以继续运行。
使用JobScheduler
类来调度操作。 -
BroadcastReceiver 是广播接收器,可以响应系统范围内的广播通知;同时广播接收器是明确定义的应用入口,系统可以向未运行的应用发送广播。Receiver没有界面,但是可以创建状态栏通知,广播接收器作为
BroadcastReceiver
的子类实现,并且每条广播都作为Intent
对象进行传递。 -
ContentProvider 用于应用程序之间的共享数据;是数据库的抽象,包含大量API共享应用数据存储, 比如说提供给其他应用读写当前应用保存的数据。使用时作为
ContentProvider
的子类来实现。
Activity / Service / BoardcastReceiver均通过异步消息Intent启动;
Provider在成为ContentResolver的请求目标时启动。
Android Project 目录文件
当把项目目录从Android模式切换成Project模式时可以看到文件分布,如下图所示。
文件目录.png
其中需要注意的有:
- idea目录为IDE自动生成的文件,build目录为编译过程中生成的文件,均不需要关心;
- gradle目录下默认采用gradle warpper的配置文件,决定是否需要联网更新下载gradle;
- build.grade 是项目中的构建脚本;
- gradle.properities 是全局的gradle配置文件,影响项目中的所有变异脚本;
- local.propertites是本机中的Android SDK路径;
- settings.gradle用于指定项目中所引用的模块,组件化时可能用到;
- app目录下为编码内容:
a. app/libs下为引用的第三方jar包,可以自动添加到项目的构建路径里;
b. app/src目录下为源码;
c. app/res目录下为资源文件,其中图片放在drawable目录下,布局文件放在layout目录下,字符串文件放在values目录下;
d. app/build.grade是app模块中的构建脚本,可以指定项目构建相关配置
e. app/proguard-rules.pro 指定代码混淆规则
清单文件Manifest.xml
在Android系统启动应用组件之前,系统通过读取AsnroidManifest.xml确定组件的存在,应用必须在此文件中声明其所有组件,并且该文件必须位于应用项目目录的根目录中。
除了声明应用组件之外,清单文件还声明了用户权限和API级别,需要链接的三方库等。
网友评论