Android 应用程序以java作为编程语言。Android SDK工具把代码连同数据、资源文件一起编译成一个以.apk为后缀(suffix)的android 程序存档(archive)文件包。在一个单独的.apk文件中的所有代码被认为是一个应用程序,android 设备就是用.apk文件来安装应用的。

  一旦在设备上安装了应用,应用程序就会驻留在它自己的安全沙箱中:

  • android 操作系统是一个多用户linux系统,在这个系统中运行的每一个应用程序都是一个不同的用户。
  • android系统默认为每一个应用程序分配一个独一无二的用户ID(这个用户ID仅仅被系统使用,应用程序并不知道用户ID),系统为应用程序的所有文件分配权限,以使系统分配给应用程序的用户ID能访问他们。
  • 每一个进程有它自己的虚拟机(VM),因此一个应用程序的代码是和其它程序孤立(isolation)的运行的。
  • 默认情况下,每一个应用程序运行在它自己的linux进程中,当应用程序的任何一部件是,android 就开始一个进程,当不需要或者系统必须为其它应用程序回收内存时结束进程。

  android系统实现了最小特权原理。也就是说,每一个应用程序默认只能访问它工作需要访问的组件,没有更多。这就创建了一个应用程序不能访问系统中其他没有权限的部分的安全环境。

  然而应用程序有许多方法和其他应用程序共享数据和访问系统服务:

  • 我们可以为两个应用程序分配一个共享的linux用户ID,这样他们就可以访问彼此的文件。为了保持资源,拥有相同用户ID的应用程序也可以运行在相同的linux进程中共享相同的虚拟机(VM),应用程序必须有相同的证书(certificate)签名。
  • 应用程序也可以请求访问设备数据的权限,如:用户联系人、短信息、SD卡、照相机、蓝牙等等,所有的权限必须在应用程序被用户安装时授权。

  上面基本包含了关于(regarding)一个应用程序如何在系统中存在,下面将向你介绍:

  • 定义应用程序的核心框架
  • 为应用程序生命组件和需要的设备特征的清单文件
  • 和程序代码分开的资源和允许应用程序为各种设备配置优雅的(gracefully)优化它的行为

应用程序组件

  应用程序组件是应用程序的基本(essential)模块。每一个组件就是系统进入应用程序的不同入口点。事实上对于用户来说,并不是每一个组件都是一个入口点,有些组件相互依赖,但是,每一个组件作为它自己的实体存在并起到特殊的作用,每一个组件都是帮助你定义你的应用程序的整个行为的独一无二的部分。

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

  下面是这四种应用程序组件的介绍:

Activities

  一个Activity代表一个拥有用户接口的屏幕。举个例子,一个邮件程序可能有一个展示新邮件的列表Activity,一个编写(compose)邮件的Activity,和一个浏览邮件的Activity。在这个邮件程序中尽管这些Activity一起运行形成了粘性(cohesive)的用户体验,每一个Activity又是相互独立的。同样的(As such),如果这个程序允许的话,其他应用程序也可以开始任何一个Activity。举个例子,一个照相机程序可以开始邮件程序的一个Activity写一封新邮件,来分享照片。一个Activity被Activity的子类实现,更多知识请看Activities开发向导。

Services

  待续......

一、Android应用程序的基本原理(Fundamentals [,fʌndə'mentlz])的更多相关文章

  1. 【苦读官方文档】2.Android应用程序基本原理概述

    官方文档原文地址 应用程序原理 Android应用程序是通过Java编程语言来写.Android软件开发工具把你的代码和其它数据.资源文件一起编译.打包成一个APK文件,这个文档以.apk为后缀,保存 ...

  2. Android核心分析之二十Android应用程序框架之无边界设计意图

    Android应用程序框架1 无边界设计理念 Android的应用框架的外特性空间的描述在SDK文档(http://androidappdocs.appspot.com/guide/topics/fu ...

  3. 【转】android应用程序签名

    概述 Android系统要求,所有的程序经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系.证书不是用于用户控制哪些程序可以安装.证书不需要授权中心来 ...

  4. Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas

    Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas   1,Bitmap对象的获取 首先说一下Bitmap,Bitmap是Androi ...

  5. 解开Android应用程序组件Activity的"singleTask"之谜

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6714543 在Android应用程序中,可以配 ...

  6. Android应用程序内部启动Activity过程(startActivity)的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6703247 上文介绍了Android应用程序的 ...

  7. Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7932268 在前面一篇文章中,我们分析了And ...

  8. android小程序之幸运菜谱

    android小程序之幸运菜谱 前言:刚刚结束短短5天的android公开课程,收获不少,写下来记录一下吧!(因为学校校企公开课的缘故才偶然接触的android,所以只学了这几天,不喜勿喷) 一开始得 ...

  9. android应用程序签名(转)

    概述 Android系统要求,所有的程序经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系.证书不是用于用户控制哪些程序可以安装.证书不需要授权中心来 ...

随机推荐

  1. 在WP8上搭建cocos2d-x开发环境

    在WP8上搭建cocos2d-x开发环境 转自:https://github.com/koowolf/cocos-docs/blob/master/manual/framework/native/in ...

  2. JS、OnClientClick、OnClick

    OnClientClick是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在浏览器端运行,一点击就运行: OnClick是服务器端事件处理方法,在服务器端也就是IIS中运行,点 ...

  3. oracle学习 十二 使用.net程序调用带返回值的存储过程(持续更新)

    数据库返回的是结果集,存储过程返回的是一个或者多个值,所以不要使用while循环去读取,也不要使用datareader函数去调用.v_class_name是返回函数 使用.net调用oracle数据库 ...

  4. Codeforces 712 D. Memory and Scores (DP+滚动数组+前缀和优化)

    题目链接:http://codeforces.com/contest/712/problem/D A初始有一个分数a,B初始有一个分数b,有t轮比赛,每次比赛都可以取[-k, k]之间的数,问你最后A ...

  5. HDU3466Proud Merchants(贪心&背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=3466 题目大意是说n个物品每个物品的花费是p,但是如果你现在的钱少于q就买不了这个物品,每个物品的价值是v,求有 ...

  6. UVaLive 6805 Pantun Grader (恶心的模拟)

    题意:给定 n 首诗,然后让你给他打分,有四种规则,第一种是按音节打,如果音节在8-12之间,就加10,第二种就是按押韵打,如果13,24一个押韵就加20分. 第三种按音节数打,13,24有一个一样的 ...

  7. hdoj 5288 OO’s Sequence

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288 //*************头文件区************* #include<ios ...

  8. 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证-2.2身份验证开发]

    2.2身份验证开发 在我们的案例中,我们是用户通过Web应用程序进行身份识别. 上面的图示说明了如下的一些概念 l Azure AD 是标识提供程序,负责对组织的目录中存在的用户和应用程序的标识进行验 ...

  9. 3DSlicer源代码编译过程vs2008+windows xp [转]

    一 下载QT源代码编译 1.  简述   在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 ...

  10. java中final的用法

    final从字面翻译来看,有最后的,最终的;  决定性的;  不可更改的等含义,在java里面主要还是“不可改变的”这层意思,不可改变或者不想改变的final主要用在类.方法.数据这三个方面. 一.f ...