一般的android应用程序由4部分组成分别是:

Activity

Broadcast Intent Receiver

Service

Content Provider

并不是说所有的应用程序都是由这四个部分组成,有的简单的应用只需要Activity就可以了,有的只需要Broadcast Intent Receiver就可以了。

在android项目里边有个AndroidManifest.xml文件,这个文件非常重重要,就和Asp.net中的web.config文件一样,应用中要用到的组件都要首先在这个文件中

进行描述声明后才可以正常使用,否则程序中用到了上述的组件了,也不会起作用。

一、Activity 组件

Activity是开发android应用的过程中使用的最频繁的组件,它是android的最基本的组件之一。在android程序中Activity代表了手机的一个屏幕,好比Asp.net应用中的一个网页,一个android应用相当于一个web站点。在Activity中我们可以添加View,并且对View做一些操作,View可以理解为一个UI容器,在这个容器中可以添加很多UI 元素,比如:Button,TextView,EditView,List等,这些丰富的UI元素组成了和用户交互的时的丰富的用户界面,Activity控制着View中各个元素的逻辑处理和导航,比如Activity1跳转到Activity2,当然也可以在Activity2关闭的时候返回一个值给Activity1这个和Asp.net中弹出一个对话框,当关闭对话框时返回一个值给原页面是一样的,这样在开发中解决很多问题是非常方便的。

Android的导航是由一个stack控制,当打开一个新的屏幕时原来的屏幕会被置为暂停状态,并且压入历史堆栈,用户可以通过返回操作来弹出栈顶的屏幕并设置为当前操作的屏幕界面。android会把每个应用从开始到当前的每一个屏幕的页面都压入到堆栈中,在开发过程中可以有选择的移除一些堆栈中不会用到的界面。Activity是由android系统进行维护的,它有自己的生命周期。

二、Broadcast Intent Receiver组件

可以使用BroadcastReceiver来让应用对一个外部的事件作出响应,因此利用这个组件可以做一些很有意思的事情,我之前写的一篇Android中发送和接收短信就是用BroadcastReceiver组件来实现的。当电话和短信这个外部事件发生时就可以利用BroadcastReceiver组件来进行处理。BroadcastReceiver不能直接生成与用户交互的界面,因为界面是由Activity负责的,换句话说对用户来说是不透明的,用户看不到它,这个和Windows Service 类似,但是BroadccastReceiver可以通过NotificationManager来通知用户发生了什么事情,也可以使用Toast来通知用户。要使用BroadcastReceiver组件,首先要在AndroidManifest.xml中进行注册或者在代码中使用Context.registerReceiver()进行注册,只要注册了,当事件发生了,即使应用没有启动,android也会自动启动应用,来响应发生的事件。

三、Service组件

Service是一种程序,它可以运行很长时间,但它和BroadcastReceiver组件一样也没有界面,这些服务可以提供系统的某些能力,来供调用,它更像是一组API。例如播放音乐的Sevice,它可以控制音乐的播放,停止。通过startService(Intent service)可以启动一个service,可以通过Context.BindService()绑定一个Service。

四、Content Provider组件

数据在android中是私有的不能进行共享,这些数据包括文件和数据库,但是如果一个应用要使用另一个应用的数据在怎么做呢?那么这个时候Content Provider就派上用场了,一个Content Provider定义了一组标准的方法的接口,能使其它应用保存和读取此Content Privider的各种数据,那么怎么来实现呢?那就是通过去实现Contnent Privider的接口就可以了,Content Privider已经实现了数据的封装和处理,外界是看不到数据的具体存储细节,只需要通过这些标准的接口打交道就可以了,可以读取数据,删除数据,插入数据等等操作。例如android的基本应用Contects就就通过这种方式共享通讯录数据的,其它应用可以通过Content Provider组件操作通讯录中的数据。

总结,android应用的开发过程中主要使用的是以上的四个组建,灵活的使用这些组建可以满足大部分应用,其中Activity的使用是最频繁的,许多应用基本上都是有若干的Activity的相互交互构成的。

转载于:https://www.cnblogs.com/vaiyanzi/archive/2010/05/16/1736989.html

android入门之三【应用程序组成】相关推荐

  1. [转]Android入门基础教程

    第1章 Android Studio运行第一个程序 1.1 Android Studio下载: 1.1.1 Android开发者官网: Android 开发者  |  Android Develope ...

  2. Android入门文档

    该文章为网络材料整理,部分内容经过重新编写. 一. 名词介绍 JDK:Java Development Kit Java 语言的软件开发工具包 JRE:Java Runtime Environment ...

  3. Android入门(十二)SQLite事务、升级数据库

    原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...

  4. sae mysql 同步本地_MYSQL入门之三_将本地MySQL数据导入SAE数据库_MySQL

    bitsCN.com MYSQL入门之三_将本地MySQL数据导入SAE数据库 1. MySQL字符集 MySQL的默认字符集是latin1,将本地MySQL库导出成sql,再导入到SAE的MySQL ...

  5. 小猪的Android入门之路 day 1

    小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显 ...

  6. Android入门之简易计算器(一)

    Android Android入门之简易计算器(一) 文章目录 Android Android入门之简易计算器(一) @[TOC](文章目录) 前言 一.项目结构 二.界面显示 三.前端界面 1.界面 ...

  7. Android入门之简单的BMI计算

    Android入门之简单的BMI计算 UI效果图 功能 知识点 UI代码 Java主体部分 效果图 UI效果图 功能 1.输入体重身高,根据男女计算BMI值(用户密码是摆设,暂时不具备这个功能) 2. ...

  8. (4)Android入门——android四大组件基础介绍及打电话,发短信简单应用 单元测试

    1,本章是android入门最后一篇,从后面开始将进入进阶阶段.我也会加快更新速度.但愿能保持每天三篇博文的数量.但是是在保证质量的前提下.后面我还会发布一些实际开发中用到的应用案例.敬请关注! 应用 ...

  9. android 入门 006(sqlite增删改查)

    android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite;import android.content.Context; import a ...

最新文章

  1. concurrenthashmap在1.8和1.7里面有什么区别
  2. leetcode 122. 买卖股票的最佳时机 II
  3. OpenCV SURF检测的实例(附完整代码)
  4. php开发客服系统(持久连接+轮询+反向ajax)
  5. LeetCode 第 32 场双周赛(983/2957,前33.2%)
  6. 网络协议osi模型_网络协议|OSI模型第二层数据链路层
  7. 百年后你怎么在墓碑上留言?
  8. 动态规划--代码随想录
  9. 解决Tuxera NTFS for Mac软件安装问题 手动批准mac内核扩展
  10. oracle 设置不可重复,oracle – 不可重复读和幻读之间有什么区别?
  11. 2019年春招汇总,技术类校招社招千道面试题,几百份大厂面经(附答案+考点)
  12. Java毕业设计-快递物流管理系统
  13. BI是什么意思?在企业应用中有哪些好处?
  14. golang之gorm的事务操作 事务不成功原因
  15. 【Java 设计模式】UML 之类图
  16. html5游戏一键端,【稀有游戏】伊卡洛斯ol手工端+VM一键端+伊卡洛斯客户端
  17. 看完代码回首看论文:YOLOv3重读
  18. java找不到返回值_java.lang.IllegalArgumentException:找不到类型返回值的转换器
  19. lambda表达式——捕获
  20. ZStack云平台物理网络配置

热门文章

  1. 如何配置Microsoft LoopBack Adapter 配置为系统的主网络适配器
  2. js 加alert后才能执行方法
  3. Windows Server 2008 R2安装IIS
  4. SectionIndexer中的getSectionForPosition()与getPositionForSection()
  5. 基于按annotation的hibernate主键生成策略
  6. 汇总Javascript各种判断脚本(javascript经典例子)
  7. AsSystemRum 系统提权工具 实现思路及其源码
  8. hdu2962 二分 + spfa
  9. hdu4403暴力搜索
  10. 两个整数相加 相乘 有符号与无符号 溢出判断条件 移位与2的幂