Develop系列-API Guides-简介2

设备兼容性

手机--平板--电视,Android需要广泛兼容。开发者需要灵活适配多种不同的屏幕。

何为兼容性?

设备兼容性:Android兼容,Android compatibility program && CTS

app兼容性:app对于潜在的设备是兼容的

控制app兼容性

大部分情况下,你可以运行时禁用部分特性,或者为不同配置的设备提供适配资源。

如有必要,可以通过Google Play Store限制app在不支持设备上的安装:

设备特性

1、特性必须有才能用的app,可以用manifest来强制指定:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Google Play Store会比较app需要的特性和当前手机支持的特性,如上定义,如果手机没有指南针硬件,那么将无法安装有此特性要求的app

2、特性可以有,可以没有,需要通过代码动态判断来裁剪功能:

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // 设备如果没有指南针硬件,可以屏蔽指南针相关的功能
    disableCompassFeature();
}

平台版本

1、app使用的api接口是在某个Android之上才有的,那必须要加上<uses-sdk>minSdkVersion,比如:

<manifest ... >
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
    ...
</manifest>

miniSdkVersion是指app能够兼容的最小版本号;而targetSdkVersion是指app能完美运行的最大版本号。

2、代码动态判断版本来裁剪功能:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // 版本低于API Level 11时,可以禁用ClipboardManager apis中的drag/drop特性
    disableDragAndDrop();
}

屏幕配置

屏幕大小:屏幕物理大小

屏幕密度:对角DPI

Low density (120), ldpi Medium density (160), mdpi High density (240), hdpi Extra high density (320), xhdpi
Smallscreen QVGA (240x320)   480x640  
Normalscreen WQVGA400 (240x400)

WQVGA432 (240x432)

HVGA (320x480) WVGA800 (480x800) 

WVGA854 (480x854) 

600x1024

640x960
Largescreen WVGA800** (480x800) 

WVGA854** (480x854)

WVGA800* (480x800) 

WVGA854* (480x854) 

600x1024

   
Extra Largescreen 1024x600 WXGA (1280x800)?

1024x768

1280x768

1536x1152

1920x1152 

1920x1200

2048x1536

2560x1536 

2560x1600

Develop系列-API Guides-简介2,布布扣,bubuko.com

时间: 2024-10-06 20:20:38

Develop系列-API Guides-简介2的相关文章

Develop系列&mdash;API Guides

介绍 应用基础 app用Java语言编写,以apk为后缀. apk运行在自身安全的沙盒中: Android是多用户Linux系统,每个app就是一个不同的用户 默认的,系统给每个app分配唯一的Linux用户ID,并设置访问权限 每个进程有自己的虚拟机VM 默认的,每个app运行在自己的Linux进程 android系统实行最小权限原则. 然后,有两种方式可以在不同app之间共享数据或者使用系统服务: 两个app共享相同的Linux用户ID,他们就能互相访问各自的文件,app必须是相同签名的 a

Develop系列-API Guides-应用组件-Services-Bound Services

Bound Services CS架构,其中C是调用组件,S是Bound Services: C通过bindService来绑定,这个方法立即返回,没有返回值,C需要实现ServiceConnection里面的onServiceConnected和onServiceDisconnected接口. 多个C绑定同一个S时,S只调用一次onBind返回IBinder,后续来绑定S的C,直接得到同一个IBinder,onBind不再重复执行. 创建Bound Services 扩展Binder类:只在应

Develop系列-API Guides-简介3

系统权限 安全架构 app在独立进程沙盒中运行,互不影响.app静态定义所需要的权限,系统安装时提醒用户是否给app授权. 应用签名 所有应用必须用证书签名,证书由开发者管理,它们是开发者的唯一标识. 用户ID和文件访问 1.同样的shareUserId和签名,才能在同一个进程中共用一个用户ID 2.在创建新文件时,可以通过MODE_WORLD_READABLE 或 MODE_WORLD_WRITEABLE标签来设置其他应用能否读写此文件 使用权限 默认的,app没有任何权限,需要在Androi

Develop系列-API Guides-应用组件-Services

Services Services:可在后台长时间运行,无UI界面. Started: Services通过其他组件调用startService启动,能在后台一直运行,即使启动它的组件已经销毁.一般这种服务执行特定的操作而且没有返回值,比如通过网络下载或上传一个文件,一旦操作结束,服务需要停止自己. Bound: Service通过其他组件调用bindService绑定,提供一个CS架构的接口允许其他组件与Service交互.发消息.获取返回值.甚至跨进程通信.bound service与绑定它

Develop系列-API Guides-应用组件-Activities-Tasks and Back Stack

Tasks and Back Stack 一个app一般包含多个activities,每个activity执行不同任务. Task是与用户交互执行一系列任务的activities集合,这些activities已打开顺序排列在一个栈堆中. 用户点击主页面的图标或者快捷方式,如果此应用从未被执行过,那么会创建一个新的task,主界面activity作为这个task的根activity,当根activity启动其他界面,一个新的activity会被压到task的栈顶并获取焦点.此时根activity仍

Develop系列-API Guides-应用组件-Activities

Activities 生命周期 本质上来说,activity A有三种状态: Resumed:A在最前面并且拥有用户焦点,这种状态一般也称为running Paused:activity B在最前面并且拥有用户焦点,但是A仍然可见,也就是说B要么是透明的,要么没有把后面的A完全覆盖.此状态的activity对象仍在内存,维持着所有状态和成员信息,并且仍附着window manager,有可能会系统销毁. Stopped:A被B完全覆盖,此状态的activity对象仍在内存,维持着所有状态和成员信

Develop系列-API Guides-应用组件-Intents and Intent Filters(1)

Intents 和 Intent Filters (Intent译为意图,让人比较费解,实际上解释为"消息"更加合理,干脆就不翻译了) Intent是能在app组件间传递的消息体,基本使用方式有如下三种: 启动activity startActivity:intent描述需要启动的activity和必须的数据 startActivityForResult:intent启动的activity结束后,会触发onActivityResult回调 启动服务 startService:inten

Develop系列-API Guides-应用组件-Activities-Loaders

Loaders 在activity或者fragment更加容易的异步加载数据,Loaders有如下特性: 所有activity和fragment都可以使用 异步加载数据 监控数据并分发数据更新结果 配置发生变化时,会自动重连上一次的数据游标,不需要重新查询. API汇总 Class/Interface Description LoaderManager 与activity和frament关联用于管理一个或多个Loader实例的抽象类,它最常见就是和CursorLoader结合使用. 每个acti

Develop系列-API Guides-应用组件-Services-AIDL

Android接口描述语言(AIDL) AIDL定义客户端和服务器端都遵守的接口,进行进程间通信. Note:AIDL使用场景:来自多个应用的客户端通过IPC访问服务,并且服务需要处理多线程的场景: 如果你没有来自不同客户端的并发场景,建议使用Binder接口:如果你需要处理IPC,但是没有多线程的场景,建议使用Messenger.(这两种用法在http://www.cnblogs.com/konger/p/3923518.html有介绍) AIDL接口调用是直接的函数调用方式,同进程和其他进程