《2022年Android应用程序文献翻译 .pdf》由会员分享,可在线阅读,更多相关《2022年Android应用程序文献翻译 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、外文资料译文应用基础Android 应用程序是用 java 语言编写。编译好的 java 代码、和系统所需要的数据和资源文件用aapt tool 工具打包成一个Andorid 包。这个包文件是以.apk 为后缀名的。这个文件包是在移动设备上分配和安装应用程序的媒介。它就是用户下载到他们设备上的文件,所有的代码都在一个单独的.apk 文件被认为是一个独立的应用程序。有很多方式,每个Android 应用生存在他们自己的世界里:默认的,每个应用都运行在它们自己的linux进程中。当任何程序的代码需要执行其他程序时,Android 就开始调用,当程序不在被需要,并且系统资源要回收的时候,这个应用程序就
2、会被关闭。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -2/9每个进程都有他自己的虚拟机,所以应用都单独的运行它们的代码。默认的,每个应用被分配一个唯一的linux用户 ID。应用程序被设置许可,以保证应用文件只对本程序和本用户可用尽管也有其他的方式可以到处它们到其他应用中。安排两个应用程序共享相同的用户ID 可以有可能的。在这种情况下他们可以看见相互的文件。为了保护系统资源,拥有相同ID 的应用程序会被安排在相同的 linux进程,并且共享虚拟机。应用组件Android 的一个核心的特性是一个应用可以用其他应用(这些应用必须提供了让其他应用访问它的许可)中的元素。例
3、如,如果你的应用需要显示一个图片列表的滚动条,并且其他应用已经开发一个合适的滚动条并且提供这个滚动条给其他程序使用,那么你就能调用这个滚动条来工作,而不是自己开发。你的应用不会包括其他程序的代码或链接。恰恰相反它需要显示的时候仅仅是其他程序块。对于这样的工作方式,当应用的任何一部分被其他应用说需要时系统必须能启动这个应用的进程。因此和其他大多数的系统的应用不同,Android 应用中对于任何部分都没有一个单一的入口(例如没有main()函数)。恰恰相反的它有必不可少的组件,当系统需要时,系统可以实例化和运行这些组件回收。有四种这样的组件:Activities一个 activity代表一个用户可
4、以尝试操作的可视化用户界面。例如,一个activity 可以表示一个用户可以选择的菜单项目列表,可以显示一个带标题的图片。一个短信息程序可以有一个activity 显示要发送信息的联系人列表,第二个 activitys可以写信息给选择的联系人。另一些 activitys可以浏览旧的信息或者改变设置。通过它们一起工作来组成一个组合的用户界面。每一个activity都依赖于其他 activity。每个都被实现 implement 为 Activity基类的子类。一个应用可以仅仅一个activity组成,它也由多个由像刚刚提到短信息程序或者显示标题的图片程序组成。activities是什么,它的多少
5、取决于应用程名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -3/9序和它的设计。典型的当应用启动的时候activities 中的一个作为第一个展示给用户,从一个 activity 转移到另一个 activity 是由当前的 activity 启动下一个 activity 来完成的。每一个 activity 会被会一个默认的窗口来设计。典型的,窗口填充屏幕,但是他可以比屏幕下,并且可以浮动在其他窗口的上面。一个activity 也可以用其他另外的窗口-例如为了用户的响应在activity的中部调用弹出对话框。或者当用户在屏幕上选择一个特定的项目窗口会显示用户的重要信息。窗
6、口的可视化组件提一个视图对象的继承。这个对象由View 类起源。每个视图控制窗口中一个特殊的长方形空间。父类视图包括内容和安排其子类的布局。叶子视图(继承关系的最底层)在它们控制的矩形和直接响应用户动作的空间中描绘。因此视图是在用户发生activity的交互的地方。例如一个视图可以显示一个小的图片并且发起一个动作当用户点击这个图片。Android 有许多的你可以用的只读视图,包括按钮,文本框,滚动条,菜单,选择框等。一个视图的继承关系是放置在activity的窗口通过Activity.setContentView()方法。内容视图是 View 对象的关系的顶部。服务 Services 服务没有
7、可视化用户界面,相反的无限期的运行在后台。例如,服务可以运行背景音乐当用户处理其他事情的时候。或者它也可以通过网络获取数据,或者收集数据并提供给用户界面所需要结果。每个服务都扩展Service 基类。一个初级的例子:一个媒体播放器在意播放列表中播放音乐。这个播放器引用可以有一个或者多个activities,activities 包括允许用户选择音乐,并开始播放它们。然而音乐运行在后台而不能用户界面处理,因为用户希望音乐继续播放当他们离开这个播放器做其他事情的时候。为了保证音乐播放,这个播放器页面能启动一个服务来在后台运行。当离开播放页面的时候系统可以保证音乐播放服务运行。我们可以连接到一个正在
8、运行的服务(可以启动一个没有运行的服务)。当连接时,你可以通过服务暴露的接口和服务进行通讯。对于音乐服务来说,这个接口有可以允许用户暂停,回放,停止,重启播放。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -4/9像 activities 和其他的组件一样,服务运行在应用进程中线程的main 函数。他们将不会阻挡其他组件,他们经常为费时的任务(如音乐播放)产生其他线程。看进程和线程。广播接收者广播接收者是一个只用来接收和相应广播通告的组件。需要广播产生于系统代码-例如,时区变更的通告,电量低的通告,图片被获取的通告,用户变更语言的通告。应用程序也能产生广播-例如让其他应
9、用知道一些被下载到设备上并且可以为其他应用所用的数据。应用能有许多广播接收者来响应任何它认为重要的通告。所有的接收者继承BroadcastReceiver基类。广播接收者不能显示用户界面,然而,作为响应它们收到的信息它可以开启一个activity,或者它门可以用NotificationManage来提醒用户。通知能获得用户的注意通过不同的方式:闪烁背景灯光,振动设备,播放音乐等。他们典型的放置一个持久图片在状态栏,同时用户可以打开它获得信息。内容提供商内容提供商把对于其他应用可用的数据做一个特殊的设定。这些数据可以被存储在文件系统中,或者轻量级数据库中,或者其他任何合理的方式。内容提供商继承
10、ContentProvider基类并实现一系列标准函数。这些函数提供其他应用来接收和存储他所控制的这种类型数据的权利。然而,应用不能直接调用这些函数。相反只能用它们 ContentResolver对象和调用这个对象的函数来替代调用ContentProvider的函数。一个内容解析器能和任何内容提供商对话。它配合提供商来管理任何进程间的对话。参考 ContentProviders文件获得更多的信息关于内容提供商的。无论什么时候一个请求都应该被某个组件处理。Android 确保这些组件的应用进程运行、开始如果需要的话。确保组件的一个恰当的实例可用、或创建这个实例如果需要的话。激活组件:intent
11、s 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -5/9当从内容解析器传来请求时内容提供商会被激活。另外的三种组件-activities,服务,和广播接收器会被叫做intents的异步消息激活。一个intent是一个带着信息内容的intent 对象。对 activities 和 服务来说,他们命名被请求的动作、指定有效的数据路径。例如,它可以为一个给用户展示图片或者或者让用户编辑一些文本的activity 传输一个请求。对于广播接收器来说,这个 Intent 对象命名被通告的动作。例如它可以告知当前人照相机按钮按下的动作。每个组件有不同的激活方法:通过 Intent
12、对象 Context.startActivity()or Activity.startActivityForResult()来加载(或做一些新的任务)。响应 activity 能通过调用它的 getIntent()函数看见让他加载的最初的intent。Android 调用的 onNewIntent()方法 Android 调用 onNewIntent()来传递随后的 activity。一个 activity 经常启动下一 activity。如果它希望从它启动的activity得到反馈,它要调用activitystartActivityForResult()取代调用startActivity()
13、。例如如果它启动一个让用户挑选照片的activity,它可以得到选择的照片。这个结果会被返回在一个被传递到activity的onActivityResult()方法的 Intent对象。一个服务被启动(或者通过正在运行的服务给出了一个新的指令)通过一个传递到 Context.startService()的 Intent对象。Android 调用服务的onStart()方法并且传递 Intent对象。同样的一个 Intent能被传递到Context.bingdService()来建立一个持续的链接在调用组件和目标服务之间。这个服务通过调用 onBind()方法接收 Intent对象人(如果这个服
14、务还没有运行,bindService()能随意的启动它)。例如一个 activity可以和前面提到的音乐播放服务建立一个连接,以便它能通过用户界面提供用户控制播放的方法。activity会调用 bindService()来建立连接,调用通过服务定义好的方法来影响播放。接下来的一个章节,远程过程调用,有关于绑定服务的更多细节。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -6/9一个应用可以通过Context.sendBroadcast(),Context.sendOrderedBroadcase(),and Context.SendStickyBroadcast()方法
15、中的任何一个传递一个Intent对象来初始化一个广播。Android 传递 Intent给所有有兴趣的广播接收者通过调用它们的onReceive 方法。了解更多关于 intent的信息,可以看 Intents and Intent Filters章节。关闭组件一个内容提供者是激活状态,只有当他响应内容解析器请求的时候。一个广播接收器是激活状态,只有当它响应广播信息的时候。所以不需要明确的关闭这些组件。Activities另一方面提供用户界面。他们在一个长期运行的和用户的会话中可以保持激活状态,主要会话还链接,甚至是空闲的时候也可以保持连接。同样的,服务可以持续长时间运行。所以Android 有
16、方法用来关闭服务和activitis,通过下面列出来的方式:一个 activity可以被关闭通过调用它的 finish()方法。一个 activity可以关闭其他 activity(这个 activity是它通过 startActivityForResult()方法启动的 activity)通过调用 finishActivity()方法。一个服务可以被停止通过调用stopSelf()方法,或者调用Context.stopService()。组件可以通过系统被关闭当他们不再被使用或者当Andorid 为其他活动的组件必须回收内存是。接下来的章节ComponentLifeCycles,详细讨论了这
17、种可能性及其后果。描述文件 The manifest file 在 Android 可以启动一个应用组件之前,它必须知晓这个组件的存在。因此应用程在他们打包到Andorid 中的包清单文件中声明他们的组件,.apk 文件也包括了应用程序的代码,文件,资源。这个清单是一个 xml 文件的格式,并且它总是被所有的应用程序命名为AndroidManifest.xml。出了声明应用的组件他做许多的事情,例如命名任何应名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -7/9用程序需要连接的(除了 Andorid 默认的库)库并且声明任何应用可以被授予的许可。但是清单文件的主要任务是
18、告知Android 应用程序的组件。例如一个activity 可以像下面那样声明:.元素的 name属性用来命名 Activity对象的子类。icon和label属性指向包括 icon 和 label 资源文件。icon 和 label能被显示给用户用来描绘 activity。其他组件用同样的方法来声明,元素是为服务组件的。元素是为广播接收器组件的 组件是为内容提供商组件的。Activities,服务和内容提供商不声明在清单中就不会被系统看见到它用晕都不会运行。然而,广播接收者既能被定义在清单中也可以通过代码动态的来创建(像BroadcastReceiver对象),并且通过调用 Context
19、.registerReceiver()在系统中注册。获得更多的怎么组织一个清单文件为你的应用程序,见The AndroidManifest.xml File。Intent过滤器Intent filters 一个 Intent对象能明确的命名一个目标组件,如果它存在,Android 找到组件(基于清单文件的声明)并激活它。但是如果一个目标不能明确的被命名,Android 必须指定最佳的组件来响应这个intent。它通过比较 Intent对象和潜在目标的 Intent过滤器来响应 intent。一个组件的 intent过滤器通知 Android名师资料总结-精品资料欢迎下载-名师精心整理-第 7
20、页,共 9 页 -8/9组件可以处理的各种各样的intent。像其他必不可少的关于组件的信息,他们被声明在清单文件中。这有一个前面例子的扩展,追加了两个intent过滤器为activity:.在例子中的第一个过滤器-动作android.intent.action.MAIN和种类android.intent.category.LAUNCHER的组合-是一个常见的过滤器。它使得activity作为一个应该被表示在应用平台上的用户能加载到他们的设备上屏幕列表的应用程序,或句话说,这个activity是程序的入口,当用户在平台中选择程序时他们可以看到最开始的东西。第二个过滤器声明了acitivity能
21、执行一个特定类型数据的动作。一个组件能有许多intent过滤器,每个过滤器声明不同的职责。如果没有任何一个过滤器,他只能通过明确命名的组件作为目标的方式来激活。对一个广播接收器来说它可以用代码来创建和注册,intent过滤器被直接实例化做为一个 IntentFilter 对象。所有的其他的过滤器建立在清单文件中。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -9/9获得过多的 intent过滤器的信息,请参见Intents and Intent Filters章节。P.S.本文的英文原文为Documentation for Android SDK,API9,revision 1中的 Dev Guide,Application Fundamentals部分。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -