应用的基本原理

文章地址:https://developer.android.com/guide/components/fundamentals.html

一旦安装到设备上,每一个app就存活在自己的安全沙箱中。

1、android操作系统是一个多用户的Linux系统,每一个应用是不同的用户

2、默认,系统会给每一个应用分配一个唯一的Linux用户id(这个id只能被系统使用,对于应用是不可知的)。一个应用中的所用文件系统都会设置权限。有分配对应用户id的应用才能访问他们。

3、每个进程有自己的虚拟机,所以应用代码是运行在于其他应用隔离的空间中。

4、默认,每个应用运行在自己的Linux进程中。只要这个应用中的任何组件被执行Android就会启动这个进程,如果他们不再需要或是为了其他应用要恢复内存这时会关闭进程。

然而,还有需要方法让一个应用与其他应用分享数据和访问系统服务。

1、可以安排两个应用共享同一Linux用户id,使得他们能访问互相的文件。为了保持系统资源,有同样用户id的应用也被安排运行在同样的Linux进程中并分享同样的虚拟机(这些应用必须用同样的签名注册)。

2、一个应用可以请求权限访问设备数据如联系人、短信等。所有的应用权限必须在用户安装的时候设定。

有4中不用类型的应用组件。每种类型提供了不同的目的、有不同的生命周期定义的组件如何创建和销毁。

1、Activities

2、Services

3、Content providers ,一个content provider 管理一组被分享的应用数据。你可以把这些数据存储在系统文件中、数据库中、web上、或是其他你的应用可以访问的持久存储的地方。通过content provider,其他应用可以查询甚至修改数据。

4、Boradcast receivers

有单独的方法激活每种类型的组件

1、通过传递Intent调用startActivity()或是startActivityForResult()方法

2、通过传递Intent调用startService()或是bindService()方法

3、可以定义一个broadcast通过Intent传递调用sendBroadcast()、sendOrderedBroadcast()或是sendStickyBroadcast()。

4、你可以执行一个查询给content provider通过调用ContentResolver的query()。

在android系统启动一个应用组件之前,必须通过读取应用的manifest文件知道他们的存在。你必须要这个文件申明所有的组件。通过在manifest文件中定义一下元素(<activity>,<service>,<receiver>,<provider>)。

Activities、services和content providers必须在manifest中申明,否则系统将不可见,无法运行。然而,broadcast receivers除了在manifest中申明也可以在代码中动态创建,通过调用registerReceiver()方法。

申明的功能如果设备不支持的话,应用将无法安装,你也可以申明这个功能但不请求他,但必须设置required为false,这样可以确保运行环境中有这个功能,但是不会使用它们。

<uses-feature android:name="android.hardware.camera.any"                  android:required="false" />
时间: 2024-08-03 15:06:34

应用的基本原理的相关文章

一、DNS解析的基本原理

1.基础知识 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53. 2.专业术语 FQDN : Full Qualified Domain Name  完全合格域名 例如:www.baidu.com   www.mirrors.163.com

android插件化-apkplug中OSGI服务基本原理-08

我们提供 apkplug 下OSGI使用demo 源码托管地址为 http://git.oschina.net/plug/OSGIService 一 OSGI与android Service 异同点 OSGI服务与android Service概念差不多也是Service ,Client 关系. android Service接口  --service.AIDL OSGI接口                --java interface 所以android 进程间通信Service只能传递序列

使用WIF实现单点登录Part II —— Windows Identity Foundation基本原理

在上一篇文章中,我们已经使用WIF构建了一个基于MVC4的简单的身份验证程序,在这篇文章里,我们将探讨一下到底什么是WIF,以及它的工作原理.然后在下一篇文章开始,我们将实际操作,实现单点登录功能. 身份标识的挑战 在上一篇文章也提及到了,大部分的开发人员并不是安全方面的专家,很多人对于身份验证,授权以及用户体验个性化等工作感觉非常的不爽.传统的计算机技术的课程里通常也不会教这些课题,因此这些东西经常在软件开发周期的后半部分才会凸显出来.当今,一个公司里有数十上百个Web应用程序和服务已不是什么

TCP和UDP基本原理

TCP和UDP基本原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 传输层的主要任务就是建立应用程序间的端到端连接,并且为数据传输提供可靠或不可靠的通信服务,TCP/IP协议族的传输层协议主要包括TCP和UDP ,TCP是面向连接的可靠的传输层协议,它支持在不可靠网络上实现面向连接的可靠的数据传输 ,UDP是无连接的传输协议,主要用于在相对可靠的网络上的数据传输,或用于对延迟较敏感的应用等. 1.传输层的作用 a>.提供面向连接或无连接的服务 b>.维护连接状态 c>

ZooKeeper基本原理

转自:http://www.cnblogs.com/edison2012/p/5654011.html ZooKeeper简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. ZooKeeper设计目的 1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能. 2.可靠性:具有简单.健壮.良好的性能,如果消息m被到一台服务器接受,那么它将被所

分布式系统设计系列 -- 基本原理及高可用策略

转自:http://blog.csdn.net/gugemichael/article/details/36688043 ==> 分布式系统中的概念==> 分布式系统与单节点的不同==> 分布式系统特性==> 分布式系统设计策略==> 分布式系统设计实践 [分布式系统中的概念] 三元组 其实,分布式系统说白了,就是很多机器组成的集群,靠彼此之间的网络通信,担当的角色可能不同,共同完成同一个事情的系统.如果按"实体"来划分的话,就是如下这几种:       

【转载】C/C++杂记:虚函数的实现的基本原理

原文:C/C++杂记:虚函数的实现的基本原理 1. 概述 简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针.例: 其中: B的虚函数表中存放着B::foo和B::bar两个函数指针. D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)了基类虚函数B::bar的D::bar,还有新增的虚函数D::quz. 提示:为了描述方便,本文在探讨对象内存布局时,将忽略内存对齐对布局的影响.

Learning ReactNative (一) : JavaScript模块基本原理与用法

在使用ReactNative进行开发的时候,我们的工程是模块化进行组织的.在npmjs.com几十万个库中,大部分都是遵循着CommonJS规则的.在ES6中引入了class的概念,从此JavaScript也可以更加方便地进行OOP编程.但是不变的是,即使在使用OOP编程,其依赖组织方式仍然是模块化的.因此,我们十分有必要了解JavaScript中模块的基本原理,以便在之后的开发过程中能少犯错误,更好的理解整个工程的结构. 本文以更容易理解的意识流的方式简要的介绍了一下require.js.mo

数据库锁的基本原理

数据库锁的基本原理 为了保证数据的完事性和一致性,数据库系统采用锁来实现事务的隔离性.各种大型数据库采用的锁基本理论是一致的,但在具体实现上各有差别. 从并发事务锁定的关系上看,可以分为共享锁定和独占锁定.从锁定的对象不同,一般可以分为表锁定和行锁定. 锁 共享锁用于读取数据操作,它是非独占的,允许其他事务同时读取其锁定的资源,但不允许其他事务更新它. 独占锁也叫排他锁,适用于修改数据的场合.它所锁定的资源,其他事务不能读取也不能修改. 当一个事务访问某种数据库资源时,如果执行select语句,

960CSS框架,之前有用过 了解下框架基本原理

http://blog.sina.com.cn/s/blog_8173443e010160b8.html CSS框架已经出现很长时间了,关于这些框架的用处也被我们讨论了很多遍了.有人说,CSS框架不够先进,还有人说这些框架大大的节省了他们的开发时间.在此,我们将不再讨论这个问题. 前段时间,我了解到了CSS框架.我最喜欢960CSS框架. 本教程将解释这个框架的基本原理,这样你就可以用960来快速进入开发. 基本原理 你必须知道一些基本原理来“学习这个框架是如何工作的”.你可以通过实验(或者是用