Android应用程序基础
Android程序使用Java语言编写。Android开发套件把数据、资源文件和Java代码编译到一个.以.apk为后缀名的Android压缩包中。一个单独的apk文件中的所有代码被认为是一个android应用程序,可以被安装到android设备中。
一旦被安装到设备中,每一个Android程序运行在自己的安全沙盒中:
l Android操作系统是一个多用户的Linux系统,每个程序都是一个不同的用户。
l 系统默认会为每个程序分配一个唯一的用户标识(这个标识只被系统使用,应用程序并不知道此标识的存在)。系统会为应用程序中所有的文件分配权限,因此只有分配给程序的用户标识可以访问它们。
l 每个进程都拥有自己的虚拟机(VM),所以每个应用程序的代码都独立于其他应用程序运行
l 每个应用程序默认运行在自己的Linux进程中。Android会在应用程序的任意组件需要被运行时启动这个进程,会在不再需要这个进程或者系统需要为其他程序回收内存时结束此进程。
Android系统通过这样实现最小特权原则。每个应用程序默认只能访问完成它的工作时需要的组件。这样创造了一个非常安全的环境,在这个环境中,应用程序无法访问没有被赋予权限的系统功能。
尽管如此,一个应用程序可以有许多方法和其他程序分享数据以及访问系统服务:
l 为两个不同的应用程序共享同一个Linux用户标识是可以的,这样他们就能够相互访问对方的文件。为了节省系统资源,拥有相同用户标识的应用程序也可以运行在同一个Linux进程中,并且共享同一个VM(这些应用程序必须使用同一个证书签名)。
l 一个应用程序可以请求权限来访问设备数据,比如联系人、短信、可挂载的存储(SD卡)、摄像头,蓝牙以及其他的设备数据。所有的应用程序权限必须在用户安装的时候被授予。
以上介绍了关于一个Android应用程序是怎样存在于系统中的基础。此文档的剩余部分会为你介绍:
l 组成应用程序的核心框架组件
l 为你的应用程序声明组件和请求设备特性的manifest文件
l 和应用程序代码是分开的资源,这样你的应用程序可以优雅的为各种设备配置优化它的行为
Android应用程序基础的更多相关文章
- Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析
在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程.Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求 ...
- Android开发之 Android应用程序目录结构解析
建立的HelloWorld的应用项目,其代码是由ADT插件自动生成的,形成Android项目特有的结构框架. 接下来让我带领大家解析一个Android程序的各个组成部分,这次我们拿一个Hello,Wo ...
- gdb 远程调试 android native 程序
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 先看一张原理图: 我是 Linux 和 Android 双料 0 基础,目前对 gdb 了解的很浅显.(注意 ...
- Android应用程序构成
一个Android应用程序一般是由以下4个组件构成的: 活动(Activity) 意图(Intent) 服务(Service) 内容提供器(Content Provider) 这4个组件是构成andr ...
- Unity开发Android应用程序:调用安卓应用程序功能
开发环境: Eclipse3.4 + adt12 + jdk6 + AndroidSDK2.2 Unity3.4 + windows7 测试设备: HTC Desire HD 本文要涉及到的几个重点问 ...
- 如何在Android应用程序中使用传感器模拟器SensorSimulator
原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...
- 用 Eclipse 开发 Android 应用程序
转自:http://www.apkbus.com/android-13828-1-1.html 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程 ...
- Android应用程序进程启动过程的源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...
- 解开Android应用程序组件Activity的"singleTask"之谜
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6714543 在Android应用程序中,可以配 ...
随机推荐
- C#第四天
2.类语法:[public] class 类名{ 字段; 属性; 方法;}写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化.使用关键字 n ...
- 【洛谷P1352】没有上司的舞会
[洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...
- Linux相关
可以用secureCRT远程连接Linux系统,进入tomcat,并且启动tomcat:bin/startup.sh 查看实时日志状态:tail -f logs/catalina.out
- 10682 deathgod想知道的事(数论)
10682 deathgod想知道的事 该题有题解 时间限制:1000MS 内存限制:65535K提交次数:265 通过次数:14 题型: 编程题 语言: G++;GCC Description ...
- hdu_5274_Dylans loves tree(树剖)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5274 题意:给一棵树和叶子的值,然后有单点修改操作和询问区间操作,询问的是每一个值出现的奇偶次数,如果 ...
- DefaultHttpClient is deprecated 【Api 弃用]】
最近在使用Apache的httpclient的时候,maven引用了最新版本4.3,发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了,之前在使用4.2.3版本的时候,还没有 ...
- jquery:赋值
Jquery的赋值语句 $("#txtStyle").val(value); 获取操作: var val = $('#test').val(); --
- redis学习一
一.简介: 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.MongoDB ...
- isr
Kafaka动态维护了一个同步状态的副本的集合(a set of in-sync replicas),简称ISR
- Response.Flush()
Response.Buffer=True就是在缓存网页 访问网站一般是程序直接输出网页结果,或从缓存中读取网页结果2种方式.两种方式在速度上是有差异的 设置 Response.Buffer = Tru ...