1.1活动
Android 中,Activity是全部程序的根本,全部程序的流程都运行在Activity 之中,Activity能够算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 通常表明手机屏幕的一屏。若是把手机比做一个浏览器,那么Activity就至关于一个网页。在Activity 当中能够添加一些Button、Check box 等控件。能够看到Activity 概念和网页的概念至关相似。通常一个Android 应用是由多个Activity 组成的。这多个Activity 之间能够进行相互跳转,例如,按下一个
Button按钮后,可能会跳转到其余的Activity。和网页跳转稍微有些不同的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样作在不少时候是至关方便的。
当打开一个新的屏幕时,以前一个屏幕会被置为暂停状态,而且压入历史堆栈中。用户能够经过回退操做返回到之前打开过的屏幕。能够选择性的移除一些没有必要保留的屏幕,由于Android会把每一个应用的开始到当前的每一个屏幕保存在堆栈中。
1.2服务
Service 是android 系统中的一种组件,它跟Activity 的级别差很少,可是他不能本身运行,只能后台运行,而且能够和其余组件进行交互。Service 是没有界面的长生命周期的代码。Service是一种程序,它能够运行很长时间,可是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候若想上网了,那么,打开Android浏览器,这个时候虽然已经进入了浏览器这个程序,可是,歌曲播放并无中止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。固然这个播放音乐的Service也能够中止,例如,当播放列表里边的歌曲都结束,或者用户按下了中止音乐播放的快捷键等。Service 能够在和多场合的应用中使用,好比播放多媒体的时候用户启动了其余Activity这个时候程序要在后台继续播放,好比检测SD 卡上文件的变化,再或者在后台记录地理信息位置的改变等等,总之服务嘛,老是藏在后头的。
开启Service有两种方式:
(1) Context.startService():Service会经历onCreate -> onStart(若是Service尚未运行,则android先调用onCreate()而后调用onStart();
若是Service已经运行,则只调用onStart(),因此一个Service的onStart方法可能会重复调用屡次 );
StopService的时候直接onDestroy,若是是调用者本身直接退出而没有调用StopService的话,Service会一直在后台运行。该Service的调用者再启动起来后能够经过stopService关闭Service。
*注意:屡次调用Context.startservice()不会嵌套(即便会有相应的onStart()方法被调用),因此不管同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf(),他都会被中止。
补充说明:传递给StartService(0的Intent对象会传递给onStart()方法。调用顺序为:onCreate --> onStart(可屡次调用) --> onDestroy。
(2) Context.bindService():Service会经历
onCreate() -->onBind(),onBind将返回给客户端一个IBind接口实例,IBind容许客户端回调服务的方法,好比获得Service运行的状态或其余操做。这个时候把调用者(Context,例如Activity)会和Service绑定在一块儿,
Context退出了,Srevice就会调用onUnbind --> onDestroyed相应退出,所谓绑定在一块儿就共存亡了。
1.3广播接收器
在Android 中,
Broadcast是一种普遍运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可使用BroadcastReceiver 来让应用对一个外部的事件作出响应。这是很是有意思的,例如,当电话呼入这个外部事件到来的时候,能够利用BroadcastReceiver 进行处理。例如,当下载一个程序成功完成的时候,仍然能够利用BroadcastReceiver 进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来讲不是透明的,用户是看不到的。BroadcastReceiver经过NotificationManager 来通知用户这些事情发生了。BroadcastReceiver 既能够在AndroidManifest.xml 中注册,也能够在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即便程序没有启动,系统也在须要的时候启动程序。各类应用还能够经过使用Context.sendBroadcast () 将它们本身的Intent Broadcasts广播给其余应用程序。
1.4内容提供
Content Provider 是Android提供的第三方应用数据的访问方案。
在Android中,对数据的保护是很严密的,除了放在SD卡中的
数据,一个应用所持有的数据库、文件等内容,都是不容许其余直接访问的。Andorid固然不会真的把每一个应用都作成一座孤岛,它为全部应用都准备了一扇窗,这就是Content Provider。应用想对外提供的数据,能够经过派生Content Provider类, 封装成一枚Content Provider,每一个Content Provider都用一个uri做为独立的标识,形如:content://com.xxxxx。全部东西看着像
REST的样子,但实际上,它比REST 更为灵活。和REST相似,uri也能够有两种类型,一种是带id的,另外一种是列表的,但实现者不须要按照这个模式来作,给id的uri也能够返回列表类型的
数据,只要调用者明白,就无妨,不用苛求所谓的REST。
Android系统为开发者提供了丰富的系统控件,咱们能够编写漂亮的界面,也能够经过扩展系统控件,自定义控件来知足自个人需求,常见控件有:TextView、Buttion、EditText、一些布局控件等。
Android系统还自带了SQLite数据库,SQLite数据库是一种轻量级、运算速度极快的嵌入式关系型数据库。它不只支持标准的SQL语法,还能够经过Android封装好的API进行操做,让存储和读取数据变得很是方便。
移动设备和PC相比,地理位置定位是一大亮点,如今基本Android手机都内置了GPS,咱们能够经过GPS,结合咱们的创意,打造一款基于LBS的产品,是否是很酷的事情啊,再说,目前火热的LBS应用也不是空穴来风的,不过在天朝,由于可恶的GFW,只能用些本土化的地图API,好比百度地图、高德地图。要是哪天能用上大谷歌的地图,那才是高大上啊。
Android系统提供了丰富的多媒体服务,好比音乐、视频、录音、拍照、闹铃等,这一切均可以在程序中经过代码来进行控制,让你的应用变得更加丰富多彩。
Android手机中内置了多种传感器,好比加速传感器、方向传感器,这是移动设备的一大特色,咱们能够灵活地使用这些传感器,能够作出不少在PC上没法实现的应用。好比“微信摇一摇"_你懂得,“搜歌摇一摇”等功能。