Google Android API guide learning(a)
来源:互联网 发布:媒体播放器软件下载 编辑:程序博客网 时间:2024/05/23 20:00
简介(Introduction)
初识Android
Android是移动操作系统,它通过intent(类似于OO中的消息)进行四大组件(activity,BroadCastReciever, ContentProvider, service)之间的相互配合与协作。
应用基础
安卓应用是使用java语言来进行编写的。Android SDK tools 能够将你的数据和源文件编译成.apk文件,.apk文件是一个安卓包,它涵盖了一个安卓应用的所有内容,并且当支持安卓app的装置下载app时需要下载该安装包。
一旦下载app到装置之后,每个app都运行在不同的线程中,而每个线程都有自己独特的VM(virtual machine),而且都有着Linux下不同的ID,因此一般情况下不同app不会有关联。
但是当我们需要不同的app进行交互时,则需要发送申请获取permission。
(安卓系统 实现了“最低权限原则”,也就是它仅仅获取该app所需要的权限。)
应用构成
四大组件:
1. Activity
2. Service
3. Content provider
4. Broadcast receiver
Activity: UI界面;
Service: 在后台运行,执行长期运行操作或者远程工作;
Broadcast receiver:相应系统的broadcast(电池电量低等);
Content provider:管理数据库中数据的共享
激活组件
前三者都是可以通过intent被激活的的,而content provider是通过ContentResolver被激活的。
Manifest文件
manifest文件(AndroidManinfest.xml)声明了该应用所需要的所有成分,而且它必须在该app的根路径之下。任何没有被其声明的组件都不会被调用(除broadcast receiver可以在程序运行时进行动态调用外)
以下是manifest文件能够定义的主要功能:
声明组件
<?xml version="1.0" encoding="utf-8"?><manifest ... > <application android:icon="@drawable/app_icon.png" ... > <activity android:name="com.example.project.ExampleActivity" android:label="@string/example_label" ... > </activity> ... </application></manifest>
声明组件的功能
组件的激活一般是通过intent来进行的,而且intent激活可以分为显式和隐式的两种方式进行激活,隐式激活更能体现intent的强大功能特性,其需要在intent-filter标签中使用:
<manifest ... > ... <application ... > <activity android:name="com.example.project.ComposeEmailActivity"> <intent-filter> <action android:name="android.intent.action.SEND" /> <data android:type="*/*" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application></manifest>
当一个app创建了一个ACTION_SEND的intent并且传递给了startActivity()之后,系统就能够开始当前activity,执行递交邮件等功能了。
声明应用需求
<manifest ... > <uses-feature android:name="android.hardware.camera.any" android:required="true" /> <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" /> ...</manifest>
应用源文件
应用源文件就是一个Android Studio工程的基本构成,在之后会进行更为详细的介绍。
设备兼容性
对于安卓应用开发而言,兼容性有两个方面,一个是设备兼容性,一个是应用兼容性。设备兼容性是指通过了CTS(Compatibility Test Suite)并且是为安卓执行环境编写的应用,一般而言安卓应用不存在设备兼容性的问题;应用兼容性是指该应用可否在当前版本下正常使用相关功能,并且能否适应不同的屏幕大小等,一般应用兼容性是我们考虑的重点。
对设备控制你的应用的可得性
我们对应用可得性的控制主要有两种方式,一种是在androidmanifest文件中进行所需插件以及版本的控制,另外一种是在程序运行的过程中,通过判断来决定是否执行相关的功能。
主要有三个大的方面:
1. 设备特性
2. 平台版本
3. 屏幕配置
设备特性
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ...</manifest>
上述文件的内容就需要用户在下载该app的apk包是需要有罗盘传感器,没有该传感器的设备一律不运行进行该app的下载。这是可得性的第一种控制方法,以下是可得性的第二种控制方法(通过程序运行时的条件判断进行控制,注意其需要将上述manifest文件中的required改为false):
PackageManager pm = getPackageManager();if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device does not have a compass, turn off the compass feature disableCompassFeature();}
平台版本
<manifest ... > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> ...</manifest>
minSdkVersion是该应用所能够兼容的最低API版本,targetSdkVersion是该应用能兼容的最高API版本,注意是最高API版本,不是API越高越好,具体原因会在后续的学习中阐述。
以下是上述功能实现的第二种方式:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag/drop features that use ClipboardManager APIs disableDragAndDrop();}
屏幕配置
一般而言,android应用是可以兼容所有大小屏幕的设备的,但是考虑到照片清晰度等原因需要进行屏幕的相关配置。
为商业原因控制应用的可行性
例如我需要做A地区的城市导航,但是我如果在B地区,那么该应用就无法进行使用了。
系统权限
最后一个部分,未完待续….
- Google Android API guide learning(a)
- Google Bookmarks API Guide
- google API Design Guide
- A Guide to Deep Learning
- Android API guide Notification
- ANDROID A PROGRAMMERS GUIDE
- The E-Learning Handbook: A Comprehensive Guide to Online Learning
- Android API Guide学习笔记
- Learning SAS by Example: A Programmer's Guide
- Learning ActionScript 3.0: A Beginner's Guide [ILLUSTRATED]
- PHP This! A Beginners Guide To Learning Object Oriented PHP
- A guide to convolution arithmetic for deep learning
- A 2017 Guide to Semantic Segmentation with Deep Learning
- Android: google play graphic assets guide
- Android:Google Map API
- Google Maps Android API
- Google guide
- Android API Guide 之 User Interface笔记
- Bmob 移动端支付
- 微信开发第二篇:获取全局access_token
- 基于物理渲染的基础理论1.0版
- JDBC链接SQLServer数据库
- Android APK反编译就这么简单 详解(附图)
- Google Android API guide learning(a)
- 常用控件知识
- iOS 跳转到系统的设置界面
- 【译文】Mastering CMake(一)之为什么选择CMake
- Mysql入门(七)之子查询
- 浅谈云计算和大数据技术
- POJ 1236 Network of Schools
- Ext 图片上传
- QT信号和槽机制的注意事项