222外文翻译 

更新时间:2023-10-11 22:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题 目:

文 翻 译

Android应用程序介绍

Android应用程序介绍

【Application Fundamentals】

Android应用程序使用Java语言编写。Android SDK工具编译代码(包括任何数据和资源文件),将其打包成Android package,一种以.apk结果的存档文件。所有的代码只是一个.apk文件,培训班被认为是一个应用程序,并且Android授权应用程序使用它来安装应用程序。

一旦在一台设置上安装,每个应用程序生存在它自己的沙箱:

1、Android是一个多用户的Linux系统,其中每一个应用程序都是一个不同的用户。 2、默认系统赋予每个应用程序一个与惟一的Linux user ID(ID只被系统使用,对应用程序不可见)。系统设置给应用程序所有文件设置权限,使得只有被该应用程序的user ID才能访问他们。

3、每个进程有他们各自的虚拟机(VM),所以每个应用程序独立于其它应用程序运行。

4、默认每个应用程序在它自己的Linux进程中运行。Android开户进程当进程的任意一个组件需要被执行的时候,然后关闭进程当它不再被需要的时候或系统需要恢复内存给其它应用程序使用的时候。

按照这种方式,Android实现了“priciple of least privilege”,也就是,每个应用程序默认只能访问他要求用来工作的组件,除此之外,什么也没有。这种机制创建一个非常安全的环境,使得一个应用程序无法访问系统中没有授权的部门。

然后,仍然有让一个应用程序和其它应用程序分享数据的方法,也有让一个应用程序访问系统服务的方法:

1、两个应用程序可以共享同一个Linux User ID,这样他们就能相互访问对方的文件。为了保护系统资源,具体同样Linux UID的应用程序被安排同一个进程中,并且共享同一个VM(另外他们必须有同样的签名证书)。

2、一个应用程序可以请求访问在设备数据例如用户联系人、SMS消息、SK卡、照相机、蓝牙以及更多,但是必须在安装时得到用户的授权。 上面叙述了应用程序怎样在Android中存在。

【Application Components】

应用程序组件是Android应用程序的基本构建块。每个组件是一个系统能够进入你

1

应用程序的入口点。对用户来说并不是所有的组件都是实际的入口点,而是其中一些依赖于另一些,但是每个都有自己的实体的存在,并且扮演着一个独特的角色--每一个都是帮助你定义自己应用程序整体行为的一个单独构建块。

有4种不同的应用程序组件,每一种都提供不同的服务,每一种都一个不同的生命周期,生命周期定义了组件的创建和消亡。 接下来介绍上述的4种不同的应用程序组件。

【Activities】

一个activity代表一个拥有一个用户接口的屏幕。例如,电子邮件应用程序可能有

一个activity展现邮件列表,另一个activity构建email,还有一个用来阅读activity。虽然在邮件应用程序中activities一起工作来展现一个连续的用户体验,但每一个都是相对于其它的都独立。这样,不同的应用程序可以以任何一个activity开始(如果邮件应用程序允许)。例如,一个照相应用程序可以以邮件应用程序中的构建新邮件的activity来启动,目的是让用户分享邮件。 一个activity是一个实际了Activity的子类。

【Services】

一个Service是一个运行在后台以运行长时间操作或者是实现远程操作的行为的组

件。一个Service没有提供用户服务。例如,当一个用户在另运行另一个应用程序时音乐播放Service可以在后台运行,或者是从网络获取数据而不打断当前activity与用户的交互。另一个组件,例如activity,可以开始一个Service然后证它工作或者绑定它而与它交互。

一个Service是一个实现了Service的子类。

【Content providers】

一个Content provider管理器管理应用程序分享的数据集。你可以存储这些数据在

文件系统、一个SQLite数据库、在Web蔌者是任何其它的你的应用程序可以访问的永久性存储设备。通过content provider,其它应用程序可以查询甚至修改数据(如果content provider允许)。例如,Android系统提供一个content provider来管理用户的联系人信息。这样的话,任何一个拥有合适权限应用程序可以查询content provider的一部来然后来读和写关于某个人的信息。

Content providers同样在读和写一个应用程序私有数据时很有用。例如,

2

一个content provider是一个实现了ContentProvider类的子类,并且必须实现一个标准API集以允许其它应用程序行使事务。

【Broadcast receiver】

一个Broadcast receiver是一个响应系统级广播通知的组件。很多的广播源于系统,

例如,一个通知屏幕已经关闭的广播、电量很低的广播、图片锁定的广播。应用程序同样可以初始化广播-例如,让其它应用程序知道一些数据已经被下载到设备上并且可以被他们使用。虽然broadcast receivers没有用户接口,他们可以建立一个状态条的通知通知用户一个广播事件发生。更普通的是,一个broadcast receiver对其它组件来说是一个网关(gateway),只做很少一部分工作。例如,它初始化一个苦于某个事件的服务去完成一项工作。

一个broadcast receiver实现BroadcastReceiver,并且每个broadcast被Intent对象传递。

Android系统调序的一个特别之处是任何一个应用程序可以开启另一个应用程序的

组件。例如,如果你想要用户使用摄像头拍一张相片,可以另一个程序有这个功能,然后你的应用程序是使用它,而不是开发一个activity用拍摄一张相片。你不需要组合和连接摄像应用程序的代码。反而,你可以简单的启动摄像应用程序的拍照activity。当完成的时候,相片被返回到你的应用程序然后你可以使用它。对用户来讲,他感觉报像是你应用程序的一部分。

当系统启动一个组件,它为该应用程序新建一个进程(如果该进程不在运行的话),并表示例这个组件需要的类。例如,如果你的应用程序开启一个摄像机应用程序的activity来拍照,那个activity运行在摄像机应用程序的进程中,不是在你的应用程序进程中。因此,和其它操作系统的应用程序不一样,Android应用程序没有一个简单的入口点(entry point)(也就是没有main()函数)。

因为系统运行第一个应用程序在一个单独的进行中,并且赋予不同的权限以限制访问其它应用程序,你的应用程序不能直接激活其它应用程序的组件。可是,Android系统可以。所以,要激活其它进程中的组件,你必须发送一个消息给系统,指明你的意图(intent)为启动某一个组件。系统可以为你激活组件。

【Activating Components】

4种组件类中的3种-activities、services、broadcast-被一个称为intent的

3

异步消息激活。Intents让单独的组件在运行时绑定在一起(你可以把他们看作从其它组件请求行为的消息),不管那个组件属不属于你的应用程序。

intent被Intent对象创建,用来定义一个消息以启动一个指定组件或者是指定类型的组件-一个Intent可以是显示的或隐式的。

对activities和services来讲,一个intent定义了执行的行为(例如,查看或发送某个事情),可以指定要操作的URI(组件启动需要知道的事情)。例如,一个intent可以发送一个请求给activity来展现一个图片蔌者打开一个web页面。在某些情况下,你可以启动一个activity来接收结果,在这种情况下,请求的activity也返回结果在一个intent中(例如,你可发出一个intent来让用户选择一个用户联系人,然后返回给你-这个返回的intent包含一个指定选择联系人的URI)。

对broadcast receivers,intent仅简单的定义被广播的声明(例如,一个设备电量低的广播只包括一个已经的行为字符串代表“battery is low”)。

其它的组件类型,content provider,不是被intent激活。相反,它在被一个来自ContentResolver的请求盯上的时被激活。ContentResolver操作所有和content provider直接的事务,而实现事务的组件不需要和ContenResolver通信。这使得在content provider和component请求者之间留了一个虚拟的层(出于全安)。 有单独的方法来激活各种类型的组件:

1、你可以开始一个activity通过传递一个Intent给startActivity()或startActivityForResult()(当前需要activity 返回返回一个结果)。

2、你可以开户一个service(或者给当前运行service新指示)通过传递一个Intent给startService(),或者你可以绑定到service通过传递一个Intent给bindService()。 3、你可以初始化一个broadcast通过传递一个Intent给方法例如sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()。 4、你可以实现查询一个content provider通过调用ContentreSolver的query()函数。

【The Manifest File】

在Android系统能够启动一个应用程序组件之前,系统必须通过阅读应用程序

AndroidManifest.xml文件来知道组件的存在。你的应用程序必须声明它所有的组件在这个文件中,必须放在应用程序项目根目录。

Manifest文件做一系列事情包括声明应用程序组件,例如:

1、认证任何应用程序请求的用户权限,例如网络访问或者读用户联系人的权限。 2、声明应用程序所需要的最小的API级别。

4

本文来源:https://www.bwwdw.com/article/a6nf.html

Top