本文来自:CSND论坛
一 Android是什么?
Android是包含操作系统、中间件和关键应用程序的适用于移动设备的软件集合。 Android SDK提供了使用 Java语言在Android平台上开发应用程序必要的工具和API。 这是网上copy过来的原话,简洁明了。
二 Android应用程序的法则 Android应用程序是用Java编程语言编写的。编译后的Java代码 —包括应用程序需要的任何数据和资源— 被aapt工具封装到Android包中,使用.apk后缀的包文件。该文件是发布和安装到移动设备的媒介;它是用户下载到他们的设备上的文件。在一个.apk文件中的所有代码就是一个应用程序。
个人理解:.apk文件相当于一个安装到手持设备的应用程序包。 Android的一个核心特性是,一个应用程序可以使用其它应用程序的元素(那些应用程序可以提供的)。
例如,你的应用程序需要显示一个图片的滚动列表,另外一个应用程序开发了适合的滚动组件并且允许其它应用程序使用它,那么你可以调用该组件来完成显示工作,不用自己再开发了。你的应用程序不需要合并代码或者链接到该程序。只是简单的在需要的时候启动其他应用程序的那部分即可。
Android应用程序没有单一的入口点(比如说,没有main()函数)。它只实例化和运行必要的组件 为了使该特性可用,系统必须能够在应用程序的任何一部分需要执行时启动应用程序进程,并实例化其Java对象。 因此,提供了四种类型的组件:
(1)活动 活动 为用户提供有焦点的可视用户界面。每个都作为实现了基类 Activity的子类。 应用程序可以由一个活动构成,或者象刚刚提到的文本消息应用程序一样,可以包含多个活动。每个活动会被赋予一个缺省的绘制窗口。 窗口的可视内容是由层次结构的视图提供的— 从基类 View派生的对象。每个视图控制着窗口中的一部分矩形区域。父视图容纳并组织其子视图的布局。叶视图(那些最底层的视图)在矩形中绘制内容,它们在该空间直接控制并响应用户的动作。就是说,视图是活动与用户交互的地方。例如,视图可以显示一幅图像,当用户碰了图像时执行一个动作。Android有一些现成的视图可以使用 —包括按钮、文本框、滚动条、菜单项、复选框等等。 在活动的窗口中是通过函数 Activity.setContentView() 设置视图的。内容视图是位于层次的根部的视图对象。
个人理解:活动就相当于一个获得焦点的和用户交互的对象
(2)服务 服务没有可视用户界面,而是在后台无限期的运行。例如,服务可以在用户做其它事情时播放背景音乐,或者从网络上取得数据,或者做计算工作,然后返回活动需要的结果。每个服务都扩展自Service基类。
个人理解:广播接收器就是一个消息响应函数
(4)内容提供者 内容提供者生成一个提供给其它应用程序,可访问的数据集合。数据可以存储在文件系统中、SQLite 数据库中或者其它可以使用的任何形式。内容提供者通过扩展 ContentProvider基类,实现一套标准的方法,以使其它应用程序可以取得和存储它控制的类型的数据。不过应用程序并不调用这些方法。它们使用 ContentResolver对象来调用。 ContentResolver可以与任何内容提供者交互,它与提供者一起来管理复杂的进程间的通信。 当有请求需要由应用程序的部分组件处理时, Android负责确保组件所属应用程序进程的运行,需要时会启动该进程;并保证组件的实例可用,在需要时创建实例。
个人理解:感觉这个组件和前面提到的“一个应用程序可以使用其它应用程序的元素(那些应用程序可以提供的)”有很大关联,应用程序要使用其他应用程序的元素时,通过ContentResolver对象按照ContentProvider提供的方法来调用其他应用的元素
三 组件的操作
(一)组件的激活 内容提供者在被ContentResolver请求时激活。 活动、服务和广播接收者— 通过叫做意图的异步的消息激活。 意图是一个 Intent 对象,它保持着信息的内容。对于活动和服务,它指明请求的动作,指定动作需要的数据的URI和其它内容。例如,它可以对活动发出一个请求,要求显示一幅图像或者让用户编辑一些文本。对于广播接收者,意图对象指明广播的动作。例如,它可以对感兴趣的接收者发出快门被按下的消息。 还有其它方法来激活各种组件: •活动可以通过传递一个意图对象到 Context.startActivity() 或 Activity.startActivityForResult()来启动(或执行新的动作)。做出响应的活动可以通过调用 getIntent()方法取得使其运行的意图。 Android调用活动的 onNewIntent()方法传递任何之后的意图。 一个活动经常启动另一个。如果它想得到它启动的活动的结果,它可以调用 startActivityForResult()来代替 startActivity()。例如,你启动了一个活动,让用户选择一幅照片,就需要它返回的选中的照片。结果通过调用活动时传入 onActivityResult()方法的意图返回。
•通过传递意图对象到 Context.startService()来启动服务(或者给正在运行的服务新的指令)。 Android调用服务的 onStart()方法,并传给它意图对象。 同样的,可以将意图传递给 Context.bindService()来建立调用组件和目标服务之间的连接。服务会在 onBind()被调用时收到意图对象。(如果服务没有运行 bindService()会启动它。)
例如,活动可以与刚才提到的音乐播放服务建立连接,以便是用户(通过用户界面)可以控制播放。活动将调用 bindService()来设置连接,之后调用定义的方法来控制播放。
•应用程序可以初始化一个广播,通过传递一个意图对象到象 Context.sendBroadcast()、 Context.sendOrderedBroadcast()、和 Context.sendStickyBroadcast()的方法,并传入需要的变量。 Android传送意图到所有对它赶兴趣的广播接收者,通过调用它们的 onReceive()方法。
(二)组件的停止 内容提供者只有在响应ContentResolver的请求时激活。广播接收者只有在它对广播的消息作出响应时激活。因此它们不需要显式的停止它们的组件。 与之对应的,活动提供用户界面。它们在与用户的长期会话中,保持运行,无论空闲时还是会话中。与活动类似,服务也可以长时间保持运行。因此,Android有按顺序停止活动和服务的方法:
•活动可以通过调用它的 finish()方法来停止。一个活动可以停止另一个活动(由它通过, startActivityForResult()启动的),通过调用finishActivity()方法。
•服务可以通过调用它的 stopSelf()方法或Context.stopService() 方法来停止它。 组件也可能被系统停止,当它们不再使用时、或者Android为了活跃组件的运行,必须回收内存时。 最好的例子是媒体播放器根据播放列表来播放音乐。播放器会有一个或多个活动,允许用户选择和播放音乐。音乐播放本身当然不能由活动来完成,因为用户会希望在他离开播放器去做其它事情时,仍然可以让音乐继续播放。为了保持音乐播放,活动可以启动一个服务在后台运行。系统将保持音乐播放服务的执行,即使启动它的活动已经不在屏幕上了。 连接(绑定)到一个正在运行的服务(如果它没有运行的话,就启动它)是可能的。连接上之后,你就可以通过服务提供的接口与它通信了。对于音乐服务,接口可能允许用户暂停、恢复、停止和重新开始播放。 象活动一样,其它组件、服务也在应用程序进程的主线程中运行。为了不阻断其它组件或用户界面,耗时的任务(比如播放音乐)经常会切换到其它线程。 个人理解:服务就是一个后台可并发执行的程序
(3)广播接收器 广播接收器 是一个不做什么实质性工作的组件,只是接收广播通知并对其作出反应。系统代码中有很多广播源 — 例如,通知时区变更、电池电量低、选择了一个图片或者用户更改了语言选项。应用程序也可以初始化广播, —例如,让其它应用程序知道,数据已经下载到设备并可以使用了。 应用程序可以有任意数量的广播接收器,分别对有用的通知作出反应。所有的广播接收器都扩展自 BroadcastReceiver基类。 广播接收器不显示用户界面。它们可以启动活动来响应受到的信息,或者使用 NotificationManager来通知用户。通知可以通过多种方式引起用户的注意 — 背光闪烁、振动、播放音乐等等。典型地是在状态栏显示一个特定图标,用户可以打开它来取得信息.
分享到:
相关推荐
本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中系统地介绍了Android的基本概念和开发技术。 一、Android系统架构 Android系统架构是Android开发的基础,系统架构包括Linux Kernel、...
本教程将深入探讨如何利用Android Studio实现一个笔记本应用。首先,我们来看看Android Studio项目的基本结构,以及每个文件和目录的作用。 1. **gradlew.bat** 和 **gradlew**: 这两个文件是Gradle的可执行脚本,...
在Android平台上,开发一款以SQLite作为本地数据存储的笔记本应用是一项常见的任务。SQLite是一个轻量级的数据库系统,它被广泛集成到Android操作系统中,为应用程序提供本地数据存储功能。这款名为"android笔记本...
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
"Android开发笔记"是由real6410公司为开发者提供的一份宝贵的资源,特别针对real6410开发板进行优化,旨在帮助开发者快速提升Android应用开发技能。这份资料包含了从基础知识到实战经验的全方位指导。 首先,"read ...
Android学习笔记 > 十年生死两茫茫,不思量,自难忘,华年短暂,陈辞岁月悠悠伤, > 满腔热血已芜荒,展未来,后生强,战战兢兢,如履薄冰心彷徨, > 青丝化雪、鬓角成霜,已是英雄迟暮,人生怎慷慨激昂? 目录 ...
《Android第一行代码笔记》是针对初学者的Android开发指南,涵盖了从基础知识到实际应用的全方位内容。在学习Android开发的过程中,"第一行代码"往往代表着编程旅程的起点,这本笔记将帮助读者逐步理解并掌握这个...
【Android笔记本小程序源码】是一个面向Android平台的项目,它为用户提供了一个轻量级的笔记应用体验。这个小程序集成了登录注销功能,允许用户安全地管理自己的笔记。它还涉及到了数据库连接技术,用于存储和检索...
本教程将基于Android Studio,详细解析一个笔记APP的开发过程,帮助开发者了解并掌握Android应用的基本架构和核心功能实现。 1. **项目创建与环境配置** 在Android Studio中新建项目,选择"Empty Activity"模板,...
在“帝乙Android笔记之一”中,我们可以探索Android开发的基础知识,这非常适合初学者入门。Android是一种基于Linux的开源操作系统,广泛应用于智能手机和平板电脑,为开发者提供了丰富的平台来创建各种应用程序。 ...
总之,这份"最新最全的Android开发笔记"是一份宝贵的资源,无论你是初学者还是经验丰富的开发者,都能从中受益,提升自己的Android开发技能。通过学习和实践,你可以构建出更高效、更稳定、用户体验更佳的Android...
《Android开发笔记全集》是一份综合性的学习资源,涵盖了Android应用开发的多个核心领域,旨在帮助开发者系统地掌握Android平台的开发技能。这个压缩包包含的文件名为“Android开发笔记”,暗示着它可能是一个系列的...
"Android很好的学习笔记"是一份专为初学者设计的资源,旨在帮助那些想要踏入Android开发领域的新人快速掌握核心概念和技术。这份笔记以PDF格式呈现,名为“Android开发教程&.pdf”,包含了全面的Android开发知识...
在Android平台上,开发一款个人笔记本应用是一个典型的移动应用开发任务,涉及到多个技术层面。这个"Android个人笔记本"项目,从标题和描述来看,是为学习Android编程的学生或开发者设计的一个实践课程,旨在帮助...
本项目名为"Android-笔记一款以sqlitedatabase为数据库采用MVP架构的轻便易用的笔记app",它是一个典型的Android应用示例,旨在展示如何结合SQLite数据库和Model-View-Presenter(MVP)架构模式来创建一个功能完善的...
这份"Android代码笔记齐全 入门教程"显然是一个全面的学习资源,旨在帮助初学者逐步掌握Android应用开发的基础和进阶内容。下面,我们将深入探讨这些知识点,按照压缩包中文件名的顺序进行。 **day01**通常涵盖的是...
根据给定的文件信息,以下是对“Android笔记”的知识点整理与详细解释: ### Android学习笔记概览 #### 一、基础概念 1. **开篇介绍:** - 开始学习Android开发之前的基础介绍。 2. **框架简介:** - 对Android...
《Android群英传笔记》是一份详尽的关于Android开发的学习资料,涵盖了Android开发的核心概念、关键技术和实战应用。这份笔记旨在帮助开发者深入理解Android系统的工作原理,掌握开发技巧,并能应用于实际项目中。 ...