Android学习之App基础

来源:互联网 发布:js 模块化开发 编辑:程序博客网 时间:2024/05/05 01:33

最少特权原则:

  • android操作系统是一个多用户的Linux系统,其中的每一个应用程序都是一个独立的用户。
  • 默认地,系统会为每一个应用程序分配一个唯一的Linux用户ID(这个ID只能被系统使用,并且对于应用程序来说,这个ID是未知的)。系统为一个应用程序的所有文件设置了权限,所以,只有分配给这个应用程序的用户ID可以访问它们。
  • 每一个进程有它主机的虚拟机,所以一个应用程序的代码会独立与其他的应用程序运行。
  • 默认地,每一个应用程序在它自己的Linux进程中进行。android会在一个应用程序的任何一个组件需要被调用的时候启动这个进程。然后,当没有任何组件被调用或者系统需要为其他应用程序回收内存的时候,就会关闭这个进程。

    尽管如此,也可以让一个应用程序和其他应用程序共享数据,也可以让一个应用程序去调用系统服务:

  • 为两个应用程序分配同一个Linux用户ID,这样它们就可以访问对方的文件。为了节约系统资源,拥有相同用户ID的应用程序也可以被运行于相同的Linux进程中,而且共享VM(它们必须用相同的证书签名)

  • 通过请求权限来访问设备数据。

应用程序组件

每一种组件都有其唯一的目的和有独有的生命周期。
Activity
一个activity为一个用户交互提供一个单独的界面。
service
一个service是一个运行在后台的组件。它用于执行耗时操作或者远程进程。一个service并不提供用户交互界面。
Content provider
一个content provider负责管理应用程序的数据共享集。你可以通过文件系,SQLite数据库,网站,或者其他的你的应用程序可以访问的持久化存储位置来储存数据。
Broadcast receiver
broadcast receiver是一个用来响应系统范围内的广播的组件。很多广播发自于系统,应用程序可以以发起广播。在更多情况下,一个广播只是进入其他组件的一个门路。

当系统启动一个组件,它其实就启动了这个程序的进程,并且实例化这个组件所需要的类。 例如,如果你的程序启动了相机程序里的activity去拍照,这个activity实际上是运行在相机程序的进程里,而不是你自己的进程。因此,android程序并不是单入口(例如它没有main方法)

激活组件

activity,service,broadcast receiver是被一个叫做intent的异步消息激活的。intent吧不同的独立的组件在运行期绑定在一起。
对于activity和service来说,一个intent定义了将要执行的动作,并且可以指定执行动作所需要的URL。
对broadcast receiver来说,intent只是简单定义了需要广播的公告。
content provider是由一个contentResolver发起的一个指向它的请求激活的。content resolver掌握了所有content provider的直接事务。

配置文件

在android系统能够启动一个程序组件之前,系统必须通过读取程序的android Manifest.xml文件来知道这个组件是否存在。
配置文件的主要任务是通知系统,该程序都使用了哪些组件。

系统识别能够响应intent的组件的方法是比较收到的intent和设备的其它程序的配置文件中的intent filters


设备尺寸和像素密度
根据屏幕类型给设备分类,android定义了两个设备特性:屏幕尺寸和屏幕像素密度
屏幕尺寸包括:small,normal ,large,extra large
屏幕像素密度包括:low density,medium density,high density,extra high density

原创粉丝点击