zoukankan      html  css  js  c++  java
  • 一、Android应用程序的基本原理(Fundamentals [,fʌndə'mentlz])

      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

      待续......

  • 相关阅读:
    浅析什么是HOOK
    用diff命令生成Patch,用Patch命令打Patch
    Git 协作:Fetch Pull Push Branch Remote Rebase Cherry-pick相关
    apt-get update 101错误解决办法
    Python函数参数中的冒号与箭头
    Python中的多线程编程,线程安全与锁(二)
    使用pdb模块调试Python
    Python中的多线程编程,线程安全与锁(一)
    聊聊Python中的GIL
    Python中的单元测试模块Unittest快速入门
  • 原文地址:https://www.cnblogs.com/zhaoyx/p/3242113.html
Copyright © 2011-2022 走看看