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上沒法實現的應用。好比「微信搖一搖"_你懂得,「搜歌搖一搖」等功能。