1. 程式人生 > >Android開發入門的正確姿勢,你get到了嗎?

Android開發入門的正確姿勢,你get到了嗎?

開源 如何 com 正常 它的 接收 應用 切換 角度

在進行Android開發之前,我們先了解一下Android的生態圈現狀。Android系統是開源的,任何手機廠商和開發者都有權限去修改系統源代碼,定制專屬的系統。

這就產生了一個問題,不同手機廠商之間的ROM可能無法安裝在對方廠商的手機上,而每個廠商生產的手機型號又多種多樣(硬件配置和屏幕尺寸,而屏幕尺寸又會導致UI的適配性問題),Google將Android權限開放帶來的結果就是Android的碎片化問題。先看一下當前Android系統版本的分布情況:

技術分享

Android 8.0開發者預覽版已經發布,在下個月的Google I/O大會上將會正式發布,但Android系統的升級速度與iOS相比實在太慢了,去年發布的7.0至今占有率還不到5%,這主要取決於各個手機廠商對系統的適配升級。

前面提到過手機廠商的手機型號問題,每個廠商的手機型號都會有自己的定位,通過硬件配置和屏幕尺寸來確定每款手機的定位。再看一下屏幕尺寸的分布情況:

技術分享

對於開發者而言,我們更關註的是屏幕尺寸和系統版本:APP的UI布局需要保證在不同尺寸的屏幕上能夠正常顯示,不會出現布局錯亂的情況;開發過程中需要針對不同系統版本的特性做相應的邏輯適配,比如Android 6.0權限的動態申請等。

用戶在使用APP的時候,與用戶交互的每一個完整的頁面都可以看做是一個場景,而我們的APP也就是由若幹個場景組成的。那在Android中,承載這個場景的是什麽呢?下面引出Android中的第一個組件:Activity。

Activity可以看作是MVC中的Controller的角色,負責場景UI的加載以及場景的切換。那場景加載的UI從哪裏來呢?在開發過程中有兩種選擇:(1)在代碼中去完成UI的布局,目前iOS開發主要就是通過這種方式來布局的;(2)使用xml來完成布局。在Android開發中,更推薦使用第二種方式來完成靜態框架的布局,xml布局方式在布局的過程中便可以預覽到布局的效果,這種可視化的布局方式也方便來做屏幕的適配。布局的xml文件位於layout目錄下,這個目錄存放了我們APP中使用的布局文件。通常我們不會針對不同的屏幕做多套布局,而是使用一套布局文件,添加各種約束來適應不同的屏幕。

在APP的某一個場景也就是Activity中,如果希望用戶的某些操作能夠通知到其它的場景,或者接收系統的一些通知行為,那就需要由廣播來實現,這是我們需要介紹的第二個組件——廣播。由系統發出的廣播,比如收到短信或者電話這類的廣播,任何應用都有權限去捕獲這類廣播,稱為系統廣播;還有一類廣播只針對應用本身發出,用於應用內部傳遞消息,其它應用沒有捕獲的權限,這類廣播稱為本地廣播。從安全性角度來說,APP內最好使用本地廣播,而且更高效。

如果我們的應用在沒有啟動的時候也需要接收一些系統事件,比如短信,那我們需要將廣播註冊成常駐廣播,在系統發出相應的廣播後,我們註冊的BroadcastReceiver會接收到這個廣播來進行處理。在收到某些系統廣播後,如果我們需要在後臺做一些數據上報之類的操作,這些操作不需要用戶感知,也不需要UI與用戶交互,那我們可以通過Service組件來實現。

Service運行在後臺,用戶不可見,我們可以將一些耗時的操作放在Service中完成,這裏需要註意的是Service是運行在主線程的,如果在Service中需要處理特別耗時的操作,需要開啟線程來執行,否則會出現ANR。Activity可以與Service進行關聯,即使Activity被銷毀後,也可以重新進行關聯,獲取後臺任務的執行狀態。

Android中還有一個ContentProvider組件,雖然是四大組件之一,但它的使用頻率並沒有其它三個那麽高。如果你的APP不會提供數據與其它應用交互,並且也不會訪問系統的一些數據資源,可能會很少用到這個組件。ContentProvider可以看做是對底層數據的封裝,提供了增、刪、改、查的操作接口,避免了直接提供數據庫權限帶來的安全性問題。

一個完整的Android應用會由上述組件中的若幹個組成,而組件在使用時必須要先註冊,每一個Android應用都由一個AndroidManifest文件,該文件是一個應用的組件註冊表,註冊了所有在應用中使用到的組件。除了組件之外,應用使用到的權限也必須在該文件中聲明。

由於屏幕的尺寸和分辨率比較分散,同一個icon在不同的手機上顯示效果也就不同,因此對於圖片資源需要針對不同的分辨率做適配。通常設計師只會出一套iOS的資源,包括2x,3x的尺寸,那這些尺寸的資源如何對應到Android上呢?可以直接將2x資源放在xhdpi目錄下,3x資源放在xxhdpi目錄下,如果對應的目錄下沒有資源,Android系統會自動根據當前屏幕的分辨率來選擇最合適的資源加載,不會出現資源找不到的情況。

簡單總結一下:

1、Android應用由四大組件(Activity、Broadcast、Service、ContentProvider)中的若幹個組合而成,與用戶直接交互的場景由Activity來實現。

2、使用的組件必須在AndroidManifest文件中註冊,相應的權限也必須進行聲明。

3、布局文件放在layout目錄下,布局盡可能的保證控件的約束能夠適應不同的屏幕尺寸。

4、資源文件可以復用iOS的資源,2x和3x分別放在xhdpi和xxhdpi目錄下。

5、沒有了

以上只是簡單的介紹了如何從0開始做Android開發時,先有一個整體的了解,並沒有涉及到如何去使用這些組件構建Android應用。對於Android開發的初學者,先有一個大概的框架認識,然後再去詳細了解每一部分,逐步深入。

參考資料

系統版本的分布和屏幕尺寸的分布由Google提供,會定期做更新,參考鏈接:https://developer.android.com/about/dashboards/index.html

原文出自騰訊雲技術社區
原文鏈接https://www.qcloud.com/community/article/935735

Android開發入門的正確姿勢,你get到了嗎?