介绍安卓API<1>

来源:互联网 发布:php彩票门户网站源码 编辑:程序博客网 时间:2024/05/27 02:28

1.Android app提供多个进入点,其是由一些能够单独调用的且分工明确的组件建立起来的。比如,一个单个的activity提供一个用户界面,一个service在后台独立执行工作。你能在不同的app中开始一个组件,例如一个activity在一个地图应用中的展示地址,该模型为单一的app 提供多个入口点,并且能够充当作为一个用户的”默认”行为允许别的app调用。
2.Android提供一个自适应的应用框架,该框架允许你为不同的设备配置提供独特的资源。比如,你能为不同的屏幕大小创建不同的XML布局文件,并且系统会根据当前设备的屏幕大小决定应用哪种布局文件。
3.如果一个应用功能要求特定的硬件比如相机,你可以在运行时查询可以得到的设备装置。如果必要的话,你也能声明你的应用功能需要谷歌商店,如果设备上没有安装将不支持这个功能。
4.这Android操作系统是一个多用户的Linux系统,每一个应用程序都是一个不同的用户。默认情况下,系统为每一个应用程序分配一个唯一的Linux用户ID。系统为一个应用程序中的所有文件都设置了权限,因此只有拥有分配给应用程序的用户ID才能访问它们。
5.每一个进程都有它自己的虚拟机,因此一个应用代码是与其它的应用是隔离运行的。默认情况下,每一个应用都是运行在它自己的Linux进程中。当应用程序的任一组件需要被执行时,Android开始它的进程,然而在它不再需要或者系统需要为其它的应用回收内存时,关闭这个进程。
6.通过这种方式,Android系统实现了最少特权原理。换而言之,每一个应用程序,默认情况下,仅仅允许组件做它本内工作时能够访问。这就创建了一个非常安全的环境,当一个应用程序如果没有赋予权限是不能访问到系统其它部分的。然而,这里有许多方法为一个应用跟其它应用共享数据或者让一个应用访问系统服务。
7.安排两个应用共享相同的Linux用户ID这是可能的,在这种情况下它们能够相互访问彼此的文件。为了节省系统资源,拥有相同的用户ID也能够在相同的Linux进程和相同的虚拟机中运行。一个应用程序能够请求访问设备数据,比如用户的联系人,短信,内存卡,相机,蓝牙等等。所有的这些应用权限必需在用户安装时给授权。
8.这儿有四种不同类型的应用程序组件,每种类型都有一个明显的目的和生命周期,且定义了组件怎样被创造与销毁。一个Activity代表一个单一的用户界面屏幕。同样地,不同的应用可以启动这些Activities。例如,为了让用户分享照片,一个电子邮件应用可以启动相机应用中的Activity组成一个新的电子邮件应用。
9.Service是在后台运行执行长时间耗时操作或执行远程进程工作的组件。Service不提供用户界面。比如一个服务可能当用户在使用不同的应用程序时音乐在后台播放,或者在网络上获取数据没有阻塞用户Activity交互。别的组件,比如Activity,能够启动一个服务并让它运行或绑定到它并与之交互。
10.Content provider 管理应用程序的共享数据。你能存储数据在文件系统,SQLite数据库,互联网,或者你的应用能够进入的任何其它的持久化存储地址。通过这Content provider,其它的应用能够查询或甚至修改数据。比如,Android系统提供这Content Provider 管理用户的联系人信息。像这样的,拥有适当的权限能够查询部分Content provider的任何应用就能对一个特定人员信息进行读写操作。Content provider也有作用对私有不共享的应用数据进行读写操作。
11.广播接收器是一个能接收系统范围内的广播通知组件。许多广播起源于系统,比如屏幕关闭、电池不足或者图片捕获等广播通知。应用程序也能初始化广播–例如,让别的应用知道数据已经被下载并且可以得到使用。尽管广播接收器不会展示用户界面,但是当一个广播时件发生时,它可以创建一个状态栏通知。但是,更加普遍的是,广播接收器仅仅是一个”网关”旨在让其它的组件做最少的工作。比如,它能基于这个广播事件启动一个Service来执行一些工作。
12.Android系统中的一个独特设计是任何一个应用都可以启动别的应用中的组件。比如,如果你想通过设备相机捕捉一张照片,可能别的应用能做它,但是你的应用能使用它而不需要你自己再开发一个Activity来捕获照片。你不需要协同甚至不需要链接相机应用的代码。相反,你能简单地启动相机中的Activity来捕获照片。当完成时,这照片甚至能返回给你的应用程序,因此你的应用程序就能使用它,这就似乎这相机应用实际上就是你的应用的一部分。
13.当系统启动一个组件时,它会启动应用程序的进程并且实例化组件需要的类。比如,如果你的应用启动相机应用中的Activity去照相,那么Activity运行的进程是属于相机应用的而不是你的应用进程。因此,Android应用程序与大部分别的系统不一样,其没有一个单一的入口点。
14.由于系统中的每一个应用程序都有文件权限且在一个单独的进程中运行,这就很好地限制了其它的应用程序访问。你的应用程序不能直接激活其它应用的组件。然而在Android系统中,为了激活其它应用的组件,你必需发送一条想指定启动特定组件意图的消息给系统,然后由系统为你去激活这个组件。
15.四大组件中的Activities、services和广播接收三大组件类型通常是被一个叫intent的异步消息激活。在运行时Intents绑定各个组件(你能把它们作为请求别的组件行为的一个消息),不管这个组件是还是属于你的应用。
16.意图会创建一个Intent对象,该对象会定义一个消息去激活一个特定组件或一个要么是显式要么是隐式的单独特定类型组件。Intent会定义Activities和Services的执行动作和对特定数据起作用的URI。比如,Intent可能向Activity传输一个请求展示一张图片或打开一个网页的请求。在一些情况下,你可以启动一个activity获得一个结果,但在这种情况下,这activity也返回一个Intent.
17.对于广播接收器,这Intent简单地定义了广播通知。对于别的组件类型Content provider是不能被Intent激活。当然,在目标请求是来自于ContentResolver时,它会被激活。由于这Content resolver处理来自Content provider的所有直接事务
以至这提供者provider不需要组件去执行事务而是调用ContentResolves对象的方法。这使得在Content provider与组件请求信息之间保留了一个抽象层。
18.在Android系统启动一个应用组件之前,这系统必需通过读取应用的AndroidManifest.xml文件知道这组件的存在。你的必需在你的应用工程目录下的这个文件当中声明所有组件。在这份清单中会增加声明应用组件的其他信息。比如:
<1>应用程序需要确定任一用户的权限,比如访问网络请求或者读取用户的联系人
<2>声明应用程序使用时要求的硬件和软件特点,比如相机,蓝牙服务或者触屏。
<3>应用需要链接的特定的API库(除了这Android框架APIs),比如这谷歌地图库。
19.这manifest清单主要任务是通知系统关于这应用的组件。Activities,services,和content providers你必需在你的源码中包含,如果在清单mannifest中没有声明,那么对系统就不可见,导致从不能运行。然而,广播接收器能在清单中声明也能在代码中动态创建,并且系统通过调用registerReceiver去注册。
20.你能用intent调起显式命名的目标组件,然而,真正强大的隐式intent的概念。一个隐式的intent简单地描述这Action类型,并且允许系统在设备上查找一个组件去执行这个Action并始启动它。如果有多个组件能够执行这个Action所描述的intent,然后由用户选择使用哪一个。系统识别组件并且响应一个意图的方式是通过比较设备上的应用程序清单文件中的intent过滤intent接收。当你在app的manifist中声名一个Activity,你能随意地选择这activity所声明的过滤内容以便它能响应其它应用中的意图。你能为你的组件声明一个意图过滤通过在增加一个元素作为这组件声明元素的子元素。
21.这儿有许多被Android驱动的设备,但是并不是所有的设备都有相同的特点和功能。为了阻止你的应用被安装到一个缺乏你应用所需要功能的设备上,它是重要的在你的manifest清单文件中声明设备和软件要求,给出一个清晰的你的应用支持的设备类型属性。它们大部分声明仅仅是一个信息,并且系统并不去读取它们。但是Services除外。
22.一个Android应用不仅仅是代码,它也需要与源代码分离的资源文件,比如图片,音频文件和任何视频应用相关的。例如,你应该在Activity布局使用XML文件接口决定动画、菜单、风格、颜色。使用应用的资源文件而不用修改代码让更新你的应用多种字符集更容易,通过提供可选的资源集合确保你的应用适配多咱设备配置。
23.对于在你的Android工程中包括的任一资源,这SDK编译工具定义一个统一的整数ID,你能使用来自XML中定义的任一资源在你的应用代码中。这最重要的方面是提供资源与你的源代码分离为在不同的设备配置中提供一个可选的资源。例如,通过在XML中定义UI字符串,你能转化这些字符串成其它语言并保存这些字符串在不同的文件中。然后,在这个资源目录名称后追加一个用户语言设置的修饰词,这Android系统就能为你的UI应用这些合适的语言字符串。
24.Android支持多种不同的限定词供你选择资源。为了定义设备配置使用哪种资源在命名资源目录时应该包含这短字符串限定词。另外一个例子,你应该经常会创建不同的布局为你的Activities,根据这个设备的方向与大小。

原文链接参考

0 0
原创粉丝点击