- Android 5從入門到精通
- 李波
- 1139字
- 2021-03-19 15:28:59
3.1 應用程序基本組成
Android系統沒有使用常見的應用程序入口點的方法(例如main()方法),應用程序是由組件組成的,組件可以調用相互獨立的基本功能模塊,根據完成的功能不同,Android劃分了四類核心組件,即Activity、Service、BroadcastReceiver和ContentProvider,各組件之間的消息傳遞通過Intent完成。
3.1.1 Activity
Activity是Android應用程序核心組件中最基本的一種,是用戶和應用程序交互的窗口。在Android應用程序中,一個activity通常對應一個單獨的視圖。一個Android應用程序是由一個或多個Activity組成的,這些Activity相當于Web應用程序中的網頁,用于顯示信息,并且相互之間可以進行跳轉。和網頁跳轉不同的是,Activity之間的跳轉可以有返回值。
當新打開一個視圖時,之前的那個視圖會被置為暫停狀態,并且壓入歷史堆棧中,用戶可以通過回退操作返回到以前打開過的視圖。Activity是由Android系統進行維護的,它有自己的生命周期,即“產生、運行、銷毀”,但是這過程中會調用許多方法,如創建onCreate()、激活onStart()、恢復onResume()、暫停onPause()、停止onStop()、銷毀onDestroy()和重啟onRestart()等。
3.1.2 Service
Service是一種類似于Activity但是沒有視圖的程序,它沒有用戶界面,可以在后臺運行很長的時間,相當于操作系統中的一個服務。Android定義了兩種類型的Service,即本地Service和遠程Service。本地Service是只能由承載該Service的應用程序訪問的組件,而遠程Service是供在設備上運行的其他應用程序遠程訪問的Service。
通過Context.startService(Intent service)可以啟動一個Service,通過Context.bindService()可以綁定一個Service。
3.1.3 BroadcastReceiver
BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統和其他應用程序的廣播,并作出回應。在Android系統中,當有特定事件發生時就會產生相應的廣播。廣播體現在方方面面,例如,當開機過程完成后系統會產生一條廣播,接收到這條廣播就能實現開機啟動服務的功能;當網絡狀態改變時系統會產生一條廣播,接收到這條廣播就能及時地做出提示和保存數據等操作;當電池電量改變時,系統會產生一條廣播,接收到這條廣播就能在電量低時告知用戶及時保存進度等。
BroadcastReceiver不能生成UI,通過NotificationManager來通知用戶有事件發生,對于用戶來說是隱式的。BroadcastReceiver的注冊方式有兩種,一種是可以在AndroidManifest.xml中進行靜態注冊,另一種可以在運行時的代碼中使用Context.registerReceiver()進行動態注冊。只要注冊了BroadcastReceiver,即使對應的事件廣播來臨時應用程序并未啟動,系統也會自動啟動該應用程序對事件進行處理。另外,用戶還可以通過Context.sendBroadcast()將自己的Intent對象廣播給其他的應用程序。
3.1.4 ContentProvider
文件、數據庫等數據在Android系統內是私有的,僅允許被特定應用程序直接使用。在兩個程序之間數據的交換或共享由ContentProvider實現。
ContentProvider類實現了一組標準方法的接口,從而能夠讓其他的應用保存或讀取ContentProvider提供的各種數據類型。
3.1.5 Intent
Intent并不是Android應用程序四大核心組件之一,但是其重要性無可替代,因此在這里我們做一下簡單介紹。
Android應用程序核心組件中的三大核心組件——Activity、Service、BroadcastReceiver,通過消息機制被啟動激活,而所使用的消息就是Intent。Intent是對即將要進行的操作的抽象描述,承擔了Android應用程序三大核心組件相互之間的通信功能。
- JavaScript前端開發模塊化教程
- UML和模式應用(原書第3版)
- Machine Learning with R Cookbook(Second Edition)
- Python編程:從入門到實踐
- 快人一步:系統性能提高之道
- ASP.NET Core 2 Fundamentals
- Spring核心技術和案例實戰
- PHP編程基礎與實例教程
- Bootstrap 4 Cookbook
- Java Web開發就該這樣學
- OpenResty完全開發指南:構建百萬級別并發的Web應用
- 零基礎學Kotlin之Android項目開發實戰
- Building Serverless Web Applications
- Hadoop 2.X HDFS源碼剖析
- NGUI for Unity