Android开发 第四课 应用程序的组成和生命周期
来源:互联网 发布:数据是信息的载体 编辑:程序博客网 时间:2024/06/05 20:27
一、应用程序的组成部分
一般情况下,Android 应用程序由以下 4 种组件构成:
1.活动(Activity);
2.广播接收器(BroadcastReceiver);
3.服务(Service);
4.内容提供者(Content Provider)。
(1) 活动 (相当于ios中的View)
活动是最基本的 Android 应用程序组件,在应用程序中,一个活动通常就是一个单独的用户界面。每一个
活动都被实现为一个独立的类,并且从活动(Activity)基类中继承而来,活动类将会显示由视图(View)控 件组成的用户接口,并对事件(Event)做出响应。大多数的应用程序都会有多个用户界面,因此便会有多个相 应的活动。
Android 的一个活动一般对应界面中的一个屏幕显示,可以理解成一个界面,每一个活动在界面上可以包 含按钮、文本框等多种可视的UI元素。
(2)广播接收器(BroadcastReceiver)
广播接收器用于让应用程序对一个外部事件做出响应。例如:电话呼入事件、数据网络可用通知或者到了
晚上时进行通知。
(3)服务(Service)
一个服务是一个具有一段较长生命周期但没有用户界面的程序。例如:一个正在从播放列表中播放歌曲的
媒体播放器在后台运行。
4)内容提供者(Content Provider)
应用程序能够将它们的数据保存到文件或 SQLite 数据库中,甚至是任何有效的设备中。当需要将数据与其 他的应用共享时,内容提供者将会很有用。一个内容提供者类实现了一组标准的方法,从而能够让其他应用程序 保存或读取此内容提供者处理的各种数据类型。
二、应用程序的生命周期
Android 系统中的不同组件具有不同的生命周期。Android 根据每个进程中运行的组件以及组件的状态把进 程放入一个重要性分级(importancehierarchy)中。Android进程的重要性分级,可以理解成执行的优先级。
(1)前台(Foreground)进程 与用户当前正在做的事情密切相关,不同的应用程序组件能够通过不同的方法使它的宿主进程移到前台。
当下面任何一个条件满足时,都可以考虑将进程移到前台。进程正在屏幕的最前端运行一个与用户交互的Activity(它的onResume()方法被调用);进程有一个正在运行的BroadcastReceiver(它的BroadcastReceiver.onReceive()方法正在执行);进程有一个Service,并且在Service的某个方法(Service.onCreate()、Service.onStart()或者Service.onDestroy())
内有正在执行的代码。(2)可见(Visible)进程它有一个可以被用户从屏幕上看到的 Activity,但不在前台——其 onPause()方法被调用。例如:如果前台
的 Activity 是一个对话框,以前的 Activity 隐藏在对话框之后,就可能出现这种进程。这样的进程很重要,一 般不允许被杀死,除非为了保证前台进程的运行不得不这样做。
(3)服务(Service)进程
有一个已经用 startService() 方法启动的 Service,虽然这些进程用户无法直接看到,但它们做的事情却是用户所关心的(例如:后台MP3 回放或后台网络数据的上传/下载)。因此,系统将一直运行这些进程,除非内 存不足以维持所有的前台进程和可见进程。
(4)后台(Background)进程
拥有一个当前用户看不到的 Activity(它的 onStop()方法被调用),这些进程对用户体验没有直接的影响。如果它们正确执行了Activity 生命周期,系统可以在任意时刻杀死进程来回收内存,并提供给前面3种类型的 进程使用。系统中通常有很多这样的进程在运行,因此要将这些进程保存在LRU列表中,以确保当内存不足 时用户最近看到的进程最后一个被杀死。
(5)空(Empty)进程
不包含任何处于活动状态的应用程序组件。保留这种进程的唯一原因是,当下次应用程序的某个组件需要
运行时,不需要重新创建进程,这样可以提高启动速度。
以上所说的“进程”是从系统运行的角度考虑的,各种不同的进程可以理解成 Android的各种组件的不同 状态机(statemachine)。如果从应用程序的代码以及运行情况考虑,可以关注 Android 的各种组件相对应的生
命周期。
1.活动的生命周期活动是 Android 中最重要、最基础的组件,用户在界面上看到的一个个可以切换的屏幕界面就是Android
中的活动。活动的生命周期如图 1 所示。
2. 服务的生命周期
服务可以长时间运行,它的特点是没有可视化界面,服务的生命周期如图 2所示。
使用 StartService运行服务的情景:使用这种方法启动服务,服务的onCreate()和 onStart()这两个方法将被调用,服务会在后台运行直到退出,退出时将调用onDestroy()方法。
使用 bindService运行服务的情景:使用这种方法启动服务,调用者(也就是服务的客户端)将获得和服务交互的类,通过其调用时服务的相关内容会处于活动状态。
3.广播接收器的生命周期
广播接收器有一个单一的回调方法 onReceive(),当广播消息到达接收器时,Android将调用这个方法,并传递给包含在这个消息中的Intent对象。
广播接收器只有在这个方法的执行过程中才处于活动状态,当onReceive()返回后,广播接收器将不再处于活动状态。广播接收器的功能类似于一个回调函数,只是单次运行时处于活动状态。
- Android开发 第四课 应用程序的组成和生命周期
- android开发之android应用程序的组成
- Android应用程序的组成
- Android应用程序的组成
- Android 应用程序的生命周期
- Android 应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的生命周期
- 简单的轮播效果
- STL删除list元素
- qt 富文本 打印
- libevent源码深度剖析三
- 【Git】Ubuntu12.04下安装git,SSH及出现的Permission denied解决办法
- Android开发 第四课 应用程序的组成和生命周期
- Rectangle Packing,(合并多个图片,并使面积最小)
- win CE 5.0 2440修改地址一步一步来 笔记
- acm 2076
- 每一个颜色都有它的名字
- libevent源码深度剖析四
- Windows消息机制详解
- Android 聚焦拍照和震动
- cisco ssh 配置 也解释