Android应用程序基础

 Android应用程序是使用Java编写的。AndroidSDK工具把代码(包括所有的数据和资源文件)打包编译成.apk后缀的文档。所有在.apk后缀文件的代码被认为是一个程序,也是Android设备用来安装的程序。

    一旦将程序安装到设备中,每一个Android程序都运行在自己的安全沙箱中:

•Android操作系统是多用户Linux系统,每个程序可以有不同的用户。

默认的,系统会分配给每个应用程序一个唯一的Linux用户ID(这个ID只有系统知道而程序本身是一无所知的)。系统为一个程序中所有的文件设置许可,但是只有程序分配用户ID的有权限存取他们。

每个进程都有它自己的虚拟机,所以一个程序代码的运行是独立于其它程序的。

默认的,每个程序都有它自己的Linux进程。任何一个程序需要执行时,Android就启动进程,当进程不需要或者系统需要为其他的程序提供内存的时候,进程就会被结束。

    Android系统就是这样实现最低权限原理的。默认的每个程序只可以存取自己运行所需要的部分。这样就建立了一个非常安全的环境,因为程序无法存取系统所不允许的部分。

    同样的,系统也提供了程序间共享数据和程序调用系统服务的方法:

我们可以让两个程序共享同一个Linux用户ID,这样的话他们就可以存取访问相互之间的文件,为了保护系统的资源(是否可以改成充分利用系统的资源)拥有同样用户ID的程序运行在同一Linux进程并且共享同一虚拟机。(程序必须是同样的签名)

程序可以请求存取本地磁盘的数据(例如通用户的通讯录,短信,SD卡上的数据,摄像头,蓝牙等),所有程序的许可都必须在安装时得到用户的确认。

 

以上是Android程序在系统中的一些基础内容。下面的文档主要介绍:

程序的核心框架组成。

•Manifest 文件:声明程序的组成以及程序对设备参数的要求。

与程序代码分离的资源,如何针对不同的设备优化程序。

小窍门:如果你是个新的Android开发者,我们建议你跟随首页的初学者链接。初学者足迹会指引你去我们建议的下一个要学习的应用程序概念,以便更快的接触Android核心概念。

 

 

 

应用程序组成

应用程序的构成是Android程序的最基本的建筑。每一部分都有不同的程序进入点。不是所有部分都是用户的真实进入点,有些是相互依存的,但是每个都是以他们的实体存在并且扮演着特定的角色每个都是唯一的结构帮助你定义程序所有的行为。

有四种类型的component。每种类型都有明确的目的和生命周期(定义component如何创建或者销毁)。

下面就分别介绍四种类型的application components

Activities

    一个activity通过UI描绘一个单独的屏幕。例如一个email应用会有一个activity用来显示新邮件列表,一个activity来显示邮件,另外一个activity则用来读邮件。在用户看来这些activities是粘合在一起工作的,但是实际上他们是相互独立的。如果这个邮件应用程序允许的话,其它的程序也可以启动任何一个它们之中的activity。例如一个摄像程序可以在邮件应用程序中启动这个activity来建立一个新的邮件,可以允许用户来分享图片。

    一个activity作为一个子类实现了Activity类,你可以在Activity的类库中学到更多相关的知识。

Services

    Service是一个后台运行的component,它长时间运行在remote process中。

一个service从来都不会有UI。例如一个后台播放音乐的服务,同时用户在并行运行其它的程序,或者在不影响其他程序的情况下从网络上下载数据。另外的component例如activity可以启动service,让serviceactivity绑定在一起运行而达到交互的目的。

    同样的service作为子类实现了Service类,你可以在Service类库中了解更多。

Content providers

    一个content provider 控制程序如何共享数据。你可以把数据存储在文件系统中,SQLite 数据库,web上,或者其他你的应用程序可以存储的本地介质。

通过content provider ,其它的程序可以查询甚至编辑数据(如果content provider允许这样的话)例如,Android系统提供了一个content provider来管理用户的连接信息。就其本身而论,任何程序在适当的许可下可以通过content providersuch as ContactsContract.Data来存取详细的个人信息。

    Content provider 可以用来读写程序的私有数据。例如,在Note Pad例子应用中使用一个content provider来保存notes

    一个content provider作为子类实现了Content Provider,并且必须实现标准的APIs可以使其他程序完成业务。可以去Content Providers中了解更多。

 

Broadcast receivers

    一个broadcast receiver 是来接受系统层级的广播通知。许多广播都是来自系统的,例如一个广播通知屏幕关闭,电池电量过低,或者获取一幅图片。程序同样可以添加通知—例如,让其它程序知道一些数据已经下载到设备中,并且可以使用。尽管broadcast receiver并不显示一个UI,但会在广播发生时创建一个状态条来通知用户。更一般的情况下,一个broadcast只是其它component的一个入口,力求做最少的工作。举例来说,broadcast事件的基础上添加一些服务来工作。

    Broadcast receiver 作为子类实现了BroadcastReceiver每个broadcast都派生自Intent object可以去BroadcastReceiver class了解更多。

    因为系统中每个程序在文件的许可(控制存取其他程序)下运行在独立的进程中,你的程序不可以在其他程序中直接激活一个component。但是android系统可以利用其他方式实现这个功能,你必须向系统发送一个信息明确的制定你的intent去启动特定的component 。然后系统就为你激活这个component

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值