app用Java语言编写,以apk为后缀。
apk运行在自身安全的沙盒中:
android系统实行最小权限原则。
然后,有两种方式可以在不同app之间共享数据或者使用系统服务:
呈现单屏UI界面
长时间在后台运行,无界面
管理共享的app数据集,存储方式包括文件系统、SQLite数据库、Web或者app能够访问的任意存储位置
广播响应全系统的广播通知,无界面,可以创建状态栏的通知
startActivity()
, startActivityForResult()
startService()
, bindService()
sendBroadcast()
, sendOrderedBroadcast()
, sendStickyBroadcast()
ContentResolver.
query()
<activity>
<service>
<receiver>
<provider>
activity, service, content provider 必须是在manifest里面静态注册,而broadcast可以动态注册
显式指定组件类名来启动,或者隐式地通过intent filter来定义
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,然后在运行时动态检查设备是否具有照相功能,来兼容不同的设备。
任何一个非代码的资源文件,SDK编译工具会定义一个唯一的整型ID,这样能够被代码或其他资源索引到。
资源文件夹支持多种限定词来进行全球化、横竖屏等多场景的兼容。
(源自:http://developer.android.com/guide/components/fundamentals.html)