首先要明确的是应用二字,因为Android应用只是Android系统的一部分,所以我们要搞清楚开发的只是安卓系统的应用层。
Android 应用采用 Java 编程语言编写。Android SDK 工具将您的代码 — 连同任何数据和资源文件 — 编译到一个 APK:Android 软件包,即带有 .apk 后缀的存档文件中。一个 APK 文件包含 Android 应用的所有内容,它是基于 Android 系统的设备用来安装应用的文件。
当apk安装到安卓系统中后(应用会现在系统中注册),每个应该都是运行在自己的安全沙箱中的:
- 每个android应用都是运行在自己独立的虚拟机中的,与其他应用是隔绝的,每个虚拟机都运行在单独的进程中
- 默认情况下,每个应用都只能访问执行其工作所需的组件,而不能访问其他组件
Android 系统设计的独特之处在于,任何应用都可以启动其他应用的组件。但是
由于系统在单独的进程中运行每个应用,且其文件权限会限制对其他应用的访问,因此您的应用无法直接启动其他应用中的组件, 但 Android 系统却可以。因此,要想启动其他应用中的组件,您必须向系统传递一则消息,说明您想启动特定组件的 Intent。 系统随后便会为您启动该组件。系统启动某个组件时,会启动该应用的进程(如果尚未运行),并实例化该组件所需的类。此时这个应用也就随着启动了,这也是为什么android应用没有像其他应用一样有单一入口(例如main()函数)
note:其实就是应用让系统去帮他开启其他应用
在这里用到一个很重要的东西那就是Intent,Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。
Intent分为显式和隐式:
- 显式 Intent:按名称(完全限定类名)指定要启动的组件。 通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
- 显式 Intent:按名称(完全限定类名)指定要启动的组件。 通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,启动新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
创建隐式 Intent 时,Android 系统通过将 Intent 的内容与在设备上其他应用的清单文件中声明的 Intent 过滤器进行比较,从而找到要启动的相应组件。 如果 Intent 与 Intent 过滤器匹配,则系统将启动该组件,并向其传递 Intent 对象。 如果多个 Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。