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. Scene View Navigation

    [Scene View Navigation] Hold the right mouse button to enter Flythrough mode. This turns your mouse ...

  2. B. Rebranding

    http://codeforces.com/problemset/problem/591/B   B. Rebranding time limit per test 2 seconds memory ...

  3. Leetcode237:Delete Node in a Linked List

    Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...

  4. HDU1712简单的分组背包

    HDU1712http://acm.hdu.edu.cn/showproblem.php?pid=1712 简单的分组背包 #include <map> #include <set& ...

  5. CreateWaitableTimer和SetWaitableTimer函数(定时器)

    用户感觉到软件的好用,就是可以定时地做一些工作,而不需要人参与进去.比如每天定时地升级病毒库,定时地下载电影,定时地更新游戏里的人物.要想 实现这些功能,就可以使用定时器的API函数CreateWai ...

  6. UITextFiled,UIButton,UIImageView交互相互之间的事件拦截

    UIButton右上方添加一个笑button如: UIButton *button =[UIButton buttonWithType:UIButtonTypeCustom];    button.f ...

  7. Server-U_详细配置

    1.首先绿化 Server-U,运行 2.打开Server-U自动弹出如下图:如果不自动弹出,那点击界面上的 新建域  ------ 先有域再有用户,用户在域里面 4. 输入“名称”和“说明”,其中“ ...

  8. C#之 HashSet(临时笔记,未参考资料,请慎重)

    HashSet是一个集合,类似于DataSet,但是其主要用途是用来存放同一种类型的元素(string.row.table等),如果添加的元素跟定义时初始的类型不一致,就会直接编译失败. 例如: Ha ...

  9. 10.关联(Association)

    关联关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系.它体现的是两个类.或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友.这种关系比依赖更强.不存 ...

  10. SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

    由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...