Android技术讲座(3):Android应用程序的内容
来源:互联网 发布:python sys.read 编辑:程序博客网 时间:2024/05/19 22:58
一、Android应用程序的概念性描述
二、应用程序的组成部分
一般情况下,Android应用程序由以下4种组件构成:
活动(Activity);
广播接收器(BroadcastReceiver);
服务(Service);
内容提供者(Content Provider)。
一个Android应用程序是一个包(Package),包中可能包含一个或者多个Android组件(component)。
(1)活动(Activity)
活动是最基本的Android应用程序组件,在应用程序中,一个活动通常就是
一个单独的用户界面。每一个活动都被实现为一个独立的类,并且从活动
(Activity)基类中继承而来,活动类将会显示由视图(View)控件组成的用户
接口,并对事件(Event)做出响应。大多数的应用程序都会有多个用户界面,因
此便会有多个相应的活动。
Android的一个活动一般对应界面中的一个屏幕显示,可以理解成一个界面,
每一个活动在界面上可以包含按钮、文本框等多种可视的UI元素。
(2)广播接收器(BroadcastReceiver)
广播接收器用于让应用程序对一个外部事件做出响应。例如:电话呼入事件、
数据网络可用通知或者到了晚上时进行通知。
(3)服务(Service)
一个服务是一个具有一段较长生命周期但没有用户界面的程序。例如:一个
正在从播放列表中播放歌曲的媒体播放器在后台运行。
(4)内容提供者(Content Provider)
应用程序能够将它们的数据保存到文件或SQLite数据库中,甚至是任何有效
的设备中。当需要将数据与其他的应用共享时,内容提供者将会很有用。一个内
容提供者类实现了一组标准的方法,从而能够让其他应用程序保存或读取此内容提
供者处理的各种数据类型。
三、应用程序的生命周期
Android 系统中的不同组件具有不同的生命周期。Android 根据每个进程中运
行的组件以及组件的状态把进程放入一个重要性分级(importance hierarchy)中。
Android进程的重要性分级,可以理解成执行的优先级。
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中最重要、最基础的组件,用户在界面上看到的一个个可以
切换的屏幕界面就是Android中的活动。活动的生命周期如图1所示。
运行活动的情景:当一个活动被启动时,活动中的onCreate()、onStart()和
onResume()这3个方法被依次调用,活动对应的界面出现在屏幕上。
活动被“覆盖”的情景:Android的活动一般都占据一个完整的屏幕,从当
前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),
当前活动转入后台(Background),这时活动的onPasuse()方法将被调用,活
动转入后台运行。如果活动变为不可见,还将调用onStop()方法。在转入后
台时,onStop()是否被调用取决于活动是否被完全覆盖,在新的活动有透明
部分时,转入后台的活动依然“可见”,其他情况下(较多数的情况)活动均进入不可见状态(被完全覆盖)。
复,这时onResume()方法将被调用,活动重新转入前台运行。
活动完全退出的情景:当使用回退(Back)按钮退出活动时,onDestroy()
方法将被调用,活动关闭。如果系统缺少内存时,也会杀死(kill)后台的
活动,其中优先杀死不可见的活动,可见的活动一般不会被杀死。
- Android技术讲座(3):Android应用程序的内容
- android应用程序内容
- Android---接收来自其他应用程序的内容
- Android应用程序间的内容分享机制
- 【Android training】应用程序内容共享
- Android App关于应用程序升级的一点内容
- Android基础---接收来自其他应用程序的内容
- Android应用程序间的内容分享机制-----SEND/SEND_MULTIPLE
- Android开发笔记(3) 应用程序之间内容分享详解
- 史上最全:Android 应用程序内容分享详解
- Android 应用程序之间内容分享详解
- Android技术讲座(2):系统概述和学习之路
- android应用程序的启动【Android】
- Android 应用程序的生命周期
- Android 应用程序的生命周期
- Android应用程序的生命周期
- Android应用程序的开发
- android应用程序的签名
- 二十九、多态性、动态类型 和 动态绑定(二)动态绑定 和 id类型
- 三十、多态性、动态类型 和 动态绑定(三)运行时 VS 编译时
- fedora 17下安装fcitx
- android system ro
- 三十一、多态性、动态类型 和 动态绑定(四)id类型 和 静态类型
- Android技术讲座(3):Android应用程序的内容
- C++ 虚继承起因,语法练习
- 使用mount修改你的android中/system为只读权限
- 三十二、多态性、动态类型 和 动态绑定(五)措施所附带的参数 和 所产生的结果类型
- 三十三、多态性、动态类型 和 动态绑定(六)关于物件类型的问题
- 测试模式列表
- 三十四、多态性、动态类型 和 动态绑定(七)用 @try命令 处理 意外情况
- Android系统移植方法详解(转)
- 中国搜索引擎乱弹(1)-十年寡头养成史