andriod 开发应用基础1

来源:互联网 发布:如何提升淘宝星级 编辑:程序博客网 时间:2024/05/21 09:18

文章来源 :http://developer.android.com/guide/topics/fundamentals.html

Android应用程序都写在了Java编程语言。Android SDK工具编译的代码随着文件到Android包,归档文件。apk文件后缀的任何数据和资源。所有在一个单一的代码。apk文件被认为是一个应用程序,是Android的供电设备使用安装应用程序的文件。

一旦安装在设备上,每个Android应用住在自己的安全沙箱:

  • Android操作系统是一个多用户的Linux系统中的每个应用程序是一个不同的用户。
  • 默认情况下,系统为每个应用分配一个唯一的Linux用户ID(ID用于系统是未知的应用程序)。该系统设置在应用程序中的所有文件的权限只分配给该应用程序的用户ID,以便可以访问它们。
  • 每个进程都有其自己的虚拟机(VM),以便从其他应用程序隔离运行的应用程序的代码。
  • 默认情况下,每一个应用程序运行在自己的Linux进程。Android的任何应用程序的组件时,需要执行启动过程,然后关闭过程中,它不再需要时,或当系统必须恢复对其他应用程序的内存。

这样一来,Android系统实现了最小特权原则。也就是说,每个应用程序,默认情况下,只能访问到它需要做的工作并没有更多的组件。这将创建一个非常安全的环境中,应用程序不能访问部分的系统,它不获准。

然而,有一个应用程序与其他应用程序共享数据和应用程序来访问系统服务的方式:

  • 这是可能的安排为两个应用程序共享相同的Linux用户ID,在这种情况下,他们能够互相访问对方的文件。为了节省系统资源,具有相同的用户ID的应用程序也可以安排在相同的Linux进程运行,并共享相同的虚拟机(应用程序也必须使用同一证书签名)。
  • 应用程序可以请求访问用户的通讯录,短信,装入存储(SD卡),摄像头,蓝牙,以及更多的设备,如数据的权限。用户在安装时的所有应用程序必须被授予权限。

,涵盖了一个Android应用程序如何在系统中存在的基础。本文件的其余部分向您介绍:

  • 定义您的应用程序的核心框架组件。
  • 在声明组件,并为您的应用程序所需的设备功能的manifest文件。
  • 从独立的应用程序代码和资源,让您的应用程序,以优雅的各种设备配置优化其行为。

应用程序组件

应用程序组件是一个Android应用程序的重要基石。每个组件是一个不同的角度,通过该系统可以进入您的应用程序。不是所有的组件是实际的切入点,为用户和一些互相依赖,但每一个作为自己的实体存在,并发挥特定的角色,每个人都是独特的建筑块,有助于确定您的应用程序的整体行为。

有四种不同类型的应用程序组件。每个类型提供不同的目的,并有一个独特的生命周期定义如何创建和销毁组件。

这里有四种类型的应用程序组件:

活动
一个活动代表一个单一的用户界面屏幕。例如,电子邮件应用程序可能有一个活动,显示了一个新的电子邮件列表,另一个活动,撰写电子邮件,并阅读邮件的另一个活动。虽然活动的共同努力,形成凝聚力的用户体验中的电子邮件应用程序,每个人都是独立于其他。正因为如此,不同的应用程序可以启动任何一个这些活动(如电子邮件应用程序,允许它)。例如,一个摄像头应用程序可以为用户在启动的电子邮件应用程序中的活动,撰写新邮件,分享图片。

一个活动的实施作为一个子类的活动,你可以了解它的活动 开发指南。

服务
一个服务是一个组件,在后台运行,执行长时间运行的操作或远程进程执行工作。一个服务不提供用户界面。例如,服务可能会在后台播放音乐的同时,用户在不同的应用程序,或者它可能获取网络上的数据,而不阻塞用户交互的活动。如活动的另一个组成部分,可以启动该服务,并允许它运行或绑定到它与它交互。

作为一个子类服务的服务实现,你可以了解它的服务开发指南。

内容提供商
一个内容提供商管理的应用程序数据的共享。你可以存储在文件系统中,一个SQLite数据库中的数据,在网络上,或任何其他持久性存储位置,您的应用程序可以访问。通过内容提供商,其他应用程序可以查询甚至修改内容提供商的数据(如果允许)。例如,Android系统提供了一个内容供应商管理用户的联系人信息。因此,任何具有适当权限的应用程序可以查询的内容提供商(如部分ContactsContract.Data)读取和写入一个特定的人的信息。

内容提供商也有用的阅读和写作是私有的,您的应用程序,而不是共享的数据。例如,记事本示例应用程序使用一个内容提供商,保存笔记。

内容提供商作为一个子类ContentProvider的实施 ,必须实施一套标准的API,使其他应用程序进行交易。欲了解更多信息,请参阅内容提供商开发指南。

广播接收机
一个广播接收器是一个组件,全系统广播通知。从许多广播起源系统,例如,广播,宣布该屏幕已关闭,电池低,或图片被抓获。应用程序也可以启动,为广播,例如,让我们知道,一些数据已被下载到设备,可供他们使用其他应用程序。虽然广播接收机不显示用户界面,他们可能会创建一个状态栏通知 广播事件发生时提醒用户。不过,更普遍,广播接收器是一个“网关”其他组件和打算做的工作非常少量。例如,它可能会启动服务来执行基于事件的一些工作。

广播接收机实现BroadcastReceiver作为一个子类 ,每个广播作为交付的意向对象。欲了解更多信息,请参阅的BroadcastReceiver类。

独特的Andr​​oid系统设计的一个方面,是任何应用程序可以启动另一个应用程序的组件。例如,如果你希望用户与设备上的照相机捕捉的照片,还有可能和您的应用程序可以使用它的另一个应用程序,而不是发展自己拍摄照片的活动。你不需要纳入甚至从摄像头应用程序链接到代码。相反,你可以简单地开始在捕捉照片的摄像头应用程序的活动。完成后,照片甚至返回到您的应用程序,所以你可以使用它。给用户,它好像相机实际上是一个应用程序的一部分。

在系统启动时一个组件,它启动该应用程序的进程(如果它尚未运行)和实例化组件所需的类。例如,如果您的应用程序开始在捕捉照片的摄像头应用程序的活动,该活动的摄像头应用程序,在您的应用程序的过程中不属于在这个过程中运行。因此,不同于其他大多数系统上的应用程序,Android应用程序不具有一个单一的入口点(例如,有没有 main ()函数)。

因为系统运行在单独的进程与文件权限限制访问其他应用程序的每个应用程序,您的应用程序不能直接激活从另一个应用程序的一个组成部分。Android系统,但是,可以。因为系统运行单独的进程文件权限限制访问其他应用程序每个应用程序您的应用程序不能直接激活从另一个应用程序一个组成部分 Android系统,但是,可以因此,要激活另一个应用程序中一个组成部分,你必须传递一个信息系统指定你的意图启动一个特定的组件然后,系统会激活组件

激活组件 

三四个组件类型的活动,服务,广播接收机被称为意图异步消息激活。意图相互结合各个组件在运行时(你可以认为他们的使者,请求从其他组件的行动),组件是否属于你的应用程序或另一个。 

意图是创建一个Intent对象,它定义了一个消息激活一个特定的组件或特定类型的组件的意图是明确的或隐含的,分别。 

活动和服务,意图定义要执行的动作(例如,“查看”或“送”的东西),并可以指定行事(除其他事项外,正在启动的组件可能需要知道数据的URI )。例如,意图传达出一个活动的要求,显示图像,或打开一个网页。在某些情况下,你可以开始活动,收到一个结果,在这种情况下,该活动也将返回在意图的结果(例如,您可以发出的意图,让用户选择一个个人的接触,并有它归还给你返回意图包括一个URI指向所选择的接触)。 

广播接收机,目的只是定义广播(例如,广播显示设备的电池是低的,只包括已知的行动,显示“电池电量低”的字符串)的公告。 

其他组件的类型,内容提供商,没有被激活的意图。相反,它被激活时,从一个ContentResolver请求的目标。内容解析器处理所有的内容提供商直接交易,使组件的表演与供应商的交易并不需要,而呼吁ContentResolver对象的方法。这使内容提供商和组件请求信息(安全)之间的一个抽象层。 

每个组件类型为activiting有不同的方法: 

你就可以开始一个活动(或给它一些新的东西做)一个Intent传递给startActivity()或startActivityForResult()(当你想活动的返回结果)。 
你可以启动一个服务(或正在进行的服务给新的指令)的StartService()传递一个意向。或者您可以绑定到的服务,通过意图bindService()。 
你可以像sendBroadcast()方法传递一个Intent,sendOrderedBroadcast(),或sendStickyBroadcast的()开始播出。 
您可以执行一个查询内容提供商通过调用一个ContentResolver查询()。 
对于使用意图的更多信息,请参阅的意图和意图过滤器文件。激活特定组件的更多信息,还提供下列文件:活动,服务,BroadcastReceiver和内容提供商。
manifest文件

之前Android系统可以启动一个应用程序组件,系统必须知道通过阅读应用程序的AndroidManifest.xml文件清单”文件组件存在您的应用程序必须在这个文件中声明所有组件,它必须是应用项目目录

清单做了的事情,除了宣布应用程序的组件,如

确定任何用户的权限,如因特网接入只读访问用户的联系人应用程序需要
申报基于API的应用程序使用应用程序所需最低空气污染水平
声明一个摄像头,蓝牙服务,或者是多点触摸屏应用使用或要求硬件和软件功能
API库链接Android框架API除外谷歌地图图书馆应用程序需要
和更


原创粉丝点击