Android开发指导文档(译)--认识Android

 

最近学习Android,看帮助文档的开发指导,觉得写得很不错就决定翻译下,各位看客要多给意见,有什么理解错的地方一定要指出来,please!

 

 

 


 

 

 

 

Android的基本架构:

 

第一层:Linux内核:核心服务(包括硬件驱动程序、进程和内存管理、安全、网络和电源管理)都是由一个Linux2.6内核处理。内核还在硬件和软件栈的其他部分之间提供一层抽象。

第二层:库和Android运行时

库:运行在内核上,C/C++编写的各种核心库

Android运行时:包括java核心库和Dalvik虚拟机。

  • Dalvik虚拟机:Android使用特定的虚拟机来保证多个实例可以高效的运行在一个设备上,Dalvik虚拟机使用设备底层的 Linux内核来处理基本的功能,包括安全、多线程以及进程和存储管理。所有的Android硬件和系统服务访问都是使用作为中间层的Dalvik来进行管理的。

第三层:应用程序框架:提供了用于创建Android应用程序的类。它还对硬件访问和对用户界面以及应用程序的资源的管理提供了一般的抽象。

第四层:所有应用程序,包括本地和第三方都使用相同的库来构建与应用层之上。


Android应用程序如何实现最少特权原则( principle of least privilege):

         每个程序为一个.apk文件。一旦程序被安装在设备中,每个应用程序都有自己的一个安全沙箱。Linux是多用户系统,每个应用程序就是一个用户。系统为每个应用程序分配一个独一无二的Linux用户ID(该ID对应用程序不可见,只能被系统使用)。系统为一个应用程序的所有文件设置权限,只有用户ID与之匹配的应用程序才可以使用它们。

每一个进程都有它自己的虚拟机(VM),一个应用程序在运行时与其他应用程序完全隔离。

每个应用程序在它自己的Linux进程中运行,Android在这个程序的空间需要执行时启动该进程,当不再需要或者系统需要释放一部分内存给其他应用程序时关闭这个进程。

 

与其他应用程序共享数据以及使用系统服务的方法:

       可以为两个应用程序分配同一个Linux用户ID,这样这两个应用程序就可以相互访问对方的文件。为了节省系统资源,拥有同一ID的应用程序可以被安排在同一个Linux进程中,并共享同一个虚拟机。

       应用程序可以请求许可来使用设备数据,如用户通讯录,SMS信息,照相机,蓝牙等。应用程序的权限必须在用户被安装时获得。

 

Android应用程序的4个构件: 

   

Activities

每个Activity就是一个拥有用户接口(即与用户交互的空间,如按钮)的单独的屏幕。 每一个应用程序或许拥有多个Activity,例如一个email程序,拥有显示邮件列表的Activity,有阅读信件的Activity等。虽然这些Activity共同工作来满足用户而的体验,但是这些Activity是彼此独立的。不同的应用程序可以启动彼此的Activity(在获得允许的情况下)。

每个Activity是一个类,必须继承自Activity

 

Services

每个Services是一个运行在后台的来执行长周期的操作或执行远程(remote)进程的工作的组件。Service没有用户界面。比如在执行一个程序的同时一个Service在后台播放音乐,或者在不启动一个Activity的情况下从网络上接收数据。别的组件,如一个Activity可以启动一个Service并让它运行,或者绑定到它上面来与之交互。

每个Service是一个Service类的子类。

 

Content providers

content provider 管理着应用程序数据的共享集合。你可以将数据存储在文件系统、SQLite数据库、网络或者任何其他你的应用程序可以使用的持久化设备。通过content provider 应用程序可以查询和修改这些数据(如果允许的话)。如Android系统提供了一种用于管理用户联系信息的content provider 。如此所有拥有权限的应用程序都可以查询部分content provider 来读取和写入一个特定人的信息。

content provider 也常用于读写应用程序私有的不想共享的数据。如Note Padcontent provider 保存笔记。

content provider 必须继承自ContentProvider,并且实现一组标准的API

 

Broadcast receivers

这个组件除了接受和响应广播通知之外,什么都不做。很多广播由系统产生——比如屏幕关闭,电池量变低,拍摄照片都会产生广播通知。应用程序自身也可以启动一个广播——比如,让其他应用程序知道,某些数据已经完成下载,可以被这些应用程序使用了。 一个应用程序可以有任意多个broadcast receiver, 从而响应这个应用程序认为重要的任何一个广播通知。Broadcast receiver没有UI界面。但是,他们可以创建一个状态栏消息来提示用户注意广播的产生。或者一个broadcast receiver只是其他构件的一种“途径”,它只是做很少的事情。如他可能用于请求一个service来执行一些工作。

所有的receiver都继承于BroadcastReceiver这个父类。并通过Intent交付。

 


 

 

Android系统设计的一个独到之处在于任何一个应用程序可以启动其他应用程序的组件。比如你希望用户使用照相机来获取照片,你不需要开发一个Activity来自己活得照片也不需要链接照相机程序的代码,你只需要简单的启动一个照相机程序的Activity并获得一个照片。结束后照片会返回到你的应用程序,你就可以使用它了,看起来就像是照相机程序是你的应用程序的一部分。

         当系统启动一个组件时就会启动这个应用程序的进程,并指出组件需要的classes。举例来说,你的程序启动了一个照相机程序的Activity来获得一幅照片,这个Activity运行在照相机程序的进程上而不是你的应用程序所在的进程。因此不同于其他系统的应用程序,Android没有单独的入口点(如main())。

         因为系统在单独的进程中运行不同的应用程序,并使用权限来限制其他应用程序使用文件,所以你的应用程序不能 直接从其他应用程序触发一个activity。但是Android系统可以,所以为了触发其他应用程序的activity,你必须发送一个消息给操作系统来指明你的intent(意图)是想启动某个组件,然后系统为你触发它。

 

 

Activating (活动的)Components—By Intent


四个构件中的三个----activityservice—---是被一种称为intent的异步消息激活。intent在运行时将一个组件与其他组件绑定在一起,不论这些组件是否属于同一个应用程序。

         一个intent是一个Intent类的实例,这个对象定义了触发一个特定组件或者特定组件的type的消息。--一个intent可以是explicit(明确的) 或者 implicit(含蓄的), respectively().

         对于activityservice来说,intent定义了执行的动作(如“显示”或者发送什么),或者intent还指明要使用的数据的URI,比如,一个intent传达了一个activity要显示一幅图片或者打开网页的请求。在一些情况下,你会启动一个activity来获得结果,这时候,activity同样会通过一个Intent返回结果(比如,你可以发出一个intent来让用户选择一个个人的通讯录,并将它返回给你----返回的intent包含了指向选择的通讯录的URI)。

         对于brodacast receiverintent简单的定义了被广播的通告(例如说,一个指示设备电量过低的boradcat只包含了一个字符串”battrty is low”)。

       其他的组件类型Content provider不能用intent激活。相反的,它是在来自ContentResolver的请求标定目标时激活。content resolver把持着content provider的所有直接的事务,所以一个构件在用一个provider执行事务时需要调用ContentResolver对象的方法。这样在content provider和构件的请求信息(为了安全)之间产生了一个抽象层。

 

下面是激活每种类型控件的不同的方法:

  •   你可以将一个Intent传递给startActivity()startActivityForResult()来启动一个activity.
  •   你可以将一个Intent传递给startService()来启动一个service.或者可以把Intent传递给bindService()来邦定一个service
  •   你可以将一个Intent传递给sendBroadcast(),sendOrderedBroadcast()sendStickyBroadcast()来发出broadcast.
  •   你可以通过请求ContentResolverquery()方法来对content provider执行查询。

 

Manifest 文件

Android系统运行应用程序构件之前,必须通过读取这个应用程序的AndroidManifest.xml 文件

( "manifest" 文件)来确定这个构件必须存在。你的应用程序必须在这个文件中声明所有构件,并将其放在应用程序的工程根目录下。

       manifest文件往往要声明如下内容:

  •  所有应用程序需要的权限,如访问web或者读取用户通讯录的权限

 <application> <activity><service> <receiver><provider>

Activities, services, and content providers在manifest文件中必须声明,否则对系统不可见,但 broadcast receivers 可以在Manifest中声明,或者在代码中动态创建(如BroadcastReceiver)并调用registerReceiver()来注册。

  •  应用程序需要的最小API Level(一个标示Android平台版本的整数)

 

  •  应用程序需要的硬件和软件特性,如照相机、蓝牙或多交点触摸屏。
  •  应用程序需要链接的外部API库(不同于Android API,Google Maps
  •  其他

 

Application Resources

       一个Android应用程序不只是需要代码,它还需要独立于源代码的资源,如图片,声音文件和其他与应用程序呈现有关的东西。比如你要定义动画,菜单,样式,颜色以及用XML文件组织应用程序的布局。使用资源文件可以让你在不用修改代码的情况下修改你的应用程序的各种规格参数。并且通过

 

 

 

 所有的包含在你应用程序中的资源,SDK构件工具会为其定义一个唯一的ID,你可以在你的代码或XML中的其他资源中通过ID引用该资源。

       独立于代码提供资源文件的一个重要意义在于提供可变换的资源来针对不同参数(如语言和屏幕大小)的手机设备来优化你的应用程序。比如在XML中定义了一个UI字符串,你可以将字符创转换为其他语言,并将其保存在一个特定的文件中,这样通过基于语言的qualifier和用户语言的设置,系统就会将合适的字符串应用到你的UI

       QualifierAndroid 为你的可以替换的资源提供了很多不同的qualifiersQualifier是一个包含了你的资源的名称的短字符串。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android开发教程PDF是一种用于学习和掌握Android开发的教学材料。通过阅读和学习这些PDF教程,开发者可以学习到Android开发的基础知识、开发环境的搭建、Android应用的UI设计、数据存储与处理、网络通信、多媒体应用开发等相关内容。 Android开发教程PDF通常由专业的Android开发者编写,经过系统整理和优化,以便于初学者理解和学习。这些教程一般包含了详细的代码示例、图文并茂的解析和实例项目,帮助读者逐步掌握Android开发的各个方面。 在学习Android开发过程中,阅读PDF教程有以下几个优点: 1. 系统性:Android开发教程PDF一般按照从基础到高级的顺序编排,帮助读者系统性地学习和掌握Android开发的各个知识点。 2. 实用性:教程中经常会以实际的应用场景为例,让读者能够将所学知识应用到实际项目中,加深理解。 3. 自学性:PDF格式的教程可以随时随地进行学习,避免了受时间和地点限制的问题。读者可以按照自己的节奏进行学习。 4. 丰富性:Android开发领域涉及的知识点众多,PDF教程的内容也很丰富,能够帮助读者全面了解和掌握Android开发的方方面面。 当然,PDF教程也有一些局限性,比如更新速度相对较慢,无法及时跟上Android开发技术的更新。此外,由于PDF教程通常是静态的,可能会缺乏与动态互动的体验。 总体而言,Android开发教程PDF是学习Android开发的一种有效方式。读者可以结合在线资源,例如官方文档、社区问答、实例代码等,综合提高自己的开发能力。 ### 回答2: Android开发教程是一种指导开发者学习和了解如何使用Android平台进行应用程序开发的工具。这种教程通常以PDF格式提供,以便开发者可以方便地在各种设备上阅读和学习。 Android开发教程PDF通常包含以下内容: 1. Android平台的基础知识:介绍Android操作系统的版本、架构和基本原理,帮助初学者建立对Android平台的基本认识。 2. Java编程基础:Android应用程序开发的核心语言是Java,因此教程通常会包含一些Java编程的基本知识和技巧,以帮助开发者在Android开发中更加熟练地运用Java语言。 3. Android应用程序架构:教程会介绍Android应用程序的组成部分,如活动、服务、广播接收器和内容提供者,以及它们之间的关系和交互。 4. 用户界面设计:教程会详细介绍如何使用Android提供的界面布局和控件来设计用户界面,以及如何处理用户输入和响应用户操作。 5. 数据存储和管理:教程会介绍如何使用Android的数据库、文件系统和SharedPreferences等工具来存储和管理应用程序的数据。 6. 网络和多媒体:教程会介绍如何使用Android的网络通信和多媒体功能,如HTTP请求、图片加载和音频播放等。 7. 调试和测试:教程会教开发者如何使用Android提供的调试工具和测试框架来调试和测试应用程序,以确保应用程序的稳定性和性能。 Android开发教程PDF可以帮助开发者系统地学习和掌握Android应用程序开发的基本知识和技能,使他们能够更加高效地开发出功能丰富、稳定可靠的Android应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值