一、基础
1. Android是个多用户系统
2. 默认情况下, Android为每个应用分配一个独立的用户名, 只有Android系统知道这个用户名, 应用系统本身并不知道, Android为这个用户分配应用所需的权限。
3. 每个应用运行在独立的VM中,所以不同的应用之间是无法无法访问的。
4.默认情况下, 每个应用程序运行在独立的Linux进程中, 当应用中的任何组件被执行时,Android将启动这个进程。
应用之间的交互:
1. 两个应用程序可以被指定共用同一个用户名, 这样两个程序就可以访问彼此的文件。
2.所有的应用程序可以在安装时候申请联系人, 短信息,内存卡等的访问权限。
应用组件:
1. Activity : 一个Activity对应一个显示页面,一个应用程序中的Activity可以被其它应用程序调用。
2. Service : Service是一个后台运行的组件, 它没有UI, 其它组件可以启动它。
3. ContentProvider : 提供一种数据交互的方式
4. BroadcastReceiver : 用于响应一个系统级的通知,没有UI,但是可以生成一个状态栏通知。
各种组件之间的互动:
1. 可以通过传递Intent到startActivity或是startActivityForResult来启动Activity
2. 可以通过传递Intent到startService来启动Service,或者通过传递Intent到bindService来绑定到一个Service
3. 可以通过传递Intent到sendBroadcast, sendOrderedBroadcast或sendStickyBroadcast来初始化一个Broadcast
4. 可以能过调用query方法来访问ContentResolver
AndroidMenifest.xml
Android在启动一个应用的组件前, 必须通过AndroidMenifest.xml文件来加载组件, AndroidMenifest.xml文件必须放在应用程序的根目录。
*定义应用中所有的组件
1. 声明应用的用户名所需要申请的权限
2. 定义所需的API的最低级别
3. 定义所需的硬件及软件
4. 应用所需的Android之外的其它API
## 声明包含组件
<activity>, <service>和<provider>必须在Menifest中声明, 否则, 这些组件将不能被访问。
<receiver>可以在Menifest中声明, 也可以动态在代码中通过registerReceiver定义。
通过在一个组件中声明<intent-filter>,可以指定该组件所响应的Intent.
Activity的状态:
1. Resume - 前台Activity并且拥有用户焦点的状态, 或叫running
2. Paused - 其它Activity位于前台并拥有用户焦点, 但是该应用未被完全覆盖, 该应用的所有属性都将保存在内存中, 但是当内存极度缺少时系统会终止该应用。
3. Stopped - 后台运行的Activity, 状态被维护在内存中, 但是系统可能会释放其内存。
Activity回调函数:
1. onCreate - 当Activity被创建时执行
2. onStart - 当Activity即将可见时执行
3. onResume - 当Activity已经变为可见后
4. onPause - 另一个Activity变为当前状态
5. onStop - Activity不可见时, 状态已为Stopped
6. onDestory - Activity即将被销毁
在重写以上方法时需要先调用super的对应方法。
Activity完整生命周期: onCreate -> onDestory
Activity可见生命周期: onStart -> onStop
Activity前台生命周期: onResumt -> onPause
Activity A启动Activity B时的生命周期:
1. A的onPause被调用
2. B的onCreate, onStart, onResume顺序被调用
3. 如果A已经不显示, 则A的onStop被调用。