Develop系列-API Guides-简介-应用基础

应用基础

app用Java语言编写,以apk为后缀。

apk运行在自身安全的沙盒中:

  • Android是多用户Linux系统,每个app就是一个不同的用户
  • 默认的,系统给每个app分配唯一的Linux用户ID,并设置访问权限
  • 每个进程有自己的虚拟机VM
  • 默认的,每个app运行在自己的Linux进程

android系统实行最小权限原则。

然后,有两种方式可以在不同app之间共享数据或者使用系统服务:

  • 两个app共享相同的Linux用户ID,他们就能互相访问各自的文件,app必须是相同签名的
  • app可以申请权限去访问终端数据,比如用户联系人,短信息,SD卡,相机,蓝牙等等,所有app权限都必须在安装时由用户授权。

app组件

Activities

呈现单屏UI界面

Services

长时间在后台运行,无界面

Content providers

管理共享的app数据集,存储方式包括文件系统、SQLite数据库、Web或者app能够访问的任意存储位置

Broadcast receivers

广播响应全系统的广播通知,无界面,可以创建状态栏的通知

启动组件

Intent

startActivity(), startActivityForResult()

startService(), bindService()

sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcast()

ContentResolver.query() 

Manifest文件

定义组件

activity, service, content provider 必须是在manifest里面静态注册,而broadcast可以动态注册

定义组件能力

显式指定组件类名来启动,或者隐式地通过intent filter来定义

定义app依赖项

Android终端众多,为了保证app能够在任意终端运行,需要定义app依赖运行的软硬件条件,比如,你的app需要照相功能并且运行在Android2.1(API LEVEL 7)版本之上,你需要定义如下依赖项:

<manifest ... >
    <uses-feature android:name="android.hardware.camera.any"
                  android:required="true" />
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
    ...
</manifest>

这样Google Play检测到当前设备没有照相功能或者Android版本低于2.1就不能安装你的应用。

如果你的app要用到照相功能,但不是必须使用,那可以将android:required设置为false,然后在运行时动态检查设备是否具有照相功能,来兼容不同的设备。

app资源

任何一个非代码的资源文件,SDK编译工具会定义一个唯一的整型ID,这样能够被代码或其他资源索引到。

资源文件夹支持多种限定词来进行全球化、横竖屏等多场景的兼容。

posted @ 2014-08-06 23:39  konger  阅读(360)  评论(0编辑  收藏  举报