淺談Android進階之路

Android高級進階

挑些圖中幾個點簡單來談談本身的一些想法。前端

移動架構算法

移動架構是 2017 移動技術年度TOP5話題之一,從中就體會到架構是有多火,記得剛開始學 Android 時候,哪有如今那麼框架,那時候談架構的更可能是在服務端開發,好比多層架構,有展現層、業務邏輯層、數據訪問層這就是最簡單的三層模式,Android系統則是基於事件驅動響應機制設計的單頁面架構,其實跟瀏覽器中的窗口頁面是同樣的, 系統中一直有個消息輪詢監聽機制,哪一個事件被觸發了,相應的響應代碼進行處理,這些處理操做是被提早註冊到系統中。設計模式

最先開始的開發模式基本是基於Android 系統自帶 MVC 模式,Activity 基本相似於Control 的做用了,View 和Mode 互相耦合,後來才演化出如今主流的 MVP、MVVM 模式,順便提一句,MVVM 模式實際上是在微軟 WPF 技術體系中提出來。瀏覽器

圖中顯示兩個方面:安全

  • 展現層: MVC、MVP、MVVM、Clean、Flux、Android Architecture Components性能優化

  • 架構層:模塊化->組件化->插件化->沙盒/雙開技術,好比能夠雙開微信,相似Docker, 每一個頁面都是插件,相似Vue.js中每一個頁面都是組件。服務器

性能優化微信

簡單來講,一個APP 是須要從三個方面被關注的,業務功能、符合邏輯的交互、性能響應。若是咱們在使用一個 APP 時候,常常滑動時常常卡頓、時不時崩潰、有些功能設計簡直很是規,好比在 Web 網站有樹層級等麪包屑點擊,你非要在手機也搞一個相似樹級點擊加載,那是否是有點強人所難了,我上拉下拉、左滑右滑不行嗎,非要經過點擊才行嗎?那麼性能優化核心是什麼呢?追求快、穩、省、小,關注卡頓、內存泄漏和崩潰、代碼質量和邏輯、安裝包大小四個方面。想進一步的瞭解的話,能夠查閱下筆者這篇文章《Android APP 性能優化的一些思考網絡

APP安全架構

APP從代碼安全、到傳輸安全,再到存儲安全。代碼能夠經過混淆、加固來保證、傳輸安全基本基於加密算法和Token來保證傳輸的惟一性、存儲應用不可逆加密算法進行設置、因此掌握一些密碼學理論尤其重要,起碼要知道哈希散列算法,對稱加密和非對稱加密等一些常見的加密算法。

基礎進階

咱們日常在工做中碰到的View滑動衝突問題、其實經過掌握View工做機制和Android觸摸事件體系就能輕易解決掉,常看法決方式有外部攔截法和內部攔截法,基於橫座標滑動距離與縱座標滑動距離相減得出的值,判斷出是左右滑動仍是上下滑動。還有對於須要開發絢麗的動畫效果,那麼對於視圖動畫和屬性動畫一些特性必須有必定的瞭解。JNI 和 NDK 開發也是比較常見,特別對於一些作 SDK 項目爲主的,這一塊開發流程也是須要掌握,Android 中的四大組件工做機制其實底層應用的是Binder機制,咱們不妨從 AIDL 這個接口來了解 Binder。

持續集成

持續集成編譯環境是敏捷開發中很重要的一個組成部分,它可以有效地提升整個團隊的生產效率,最大化的減小人爲的出錯的可能。好比,經過代碼的持續提交,能夠減小代碼合併的痛苦,更快地與其餘人代碼集成,經過集成編譯,可以及早地發現代碼庫存在的錯誤,並支持產品、測試等人員及時取包進行功能驗證,因此對於Git、Gradle工具、Jenkins服務器須要掌握起來。

開發語言

今年能夠說是 Kotlin 年,在 Google IO 以後 Kotlin 着實風光了一把,開發者對於效率的追求是 Kotlin 如此受歡迎的最大緣由,而它的勢頭也很不錯,跨平臺的野心讓更多人有了使用它的理由,現在看起來,它甚至比 Swift 更有前途。既然 Kotlin 已然成爲 Android 世界的頭等公民,與 Java 徹底兼容,咱們有什麼理由不去擁抱它呢。

大前端

其實移動端開發也是屬於前端開發,只不過原來咱們所指的前端每每都是Web的前端開發人員,開發的是網站,而移動端未嘗不是一種展現載體,一樣有入口,只不過相比網站端移動端具體自然的可移動性、可便捷性等特性。隨着 H5 興起,原生能實現的功能一樣在 H5 端也能實現,而且在體驗性方面也逐漸提升,而且H5天生就具備動態性和跨平臺,這也是 H5 可以一時潮流的緣由之一。

設計原則

這些設計原創纔是本質,纔是不變的,纔是咱們須要真正要掌握的,開發語言特性、開發框架發展實在是太快了,咱們更不上,不是有這麼一句話嗎,封裝具體變化的,抽象起來就行,去追尋哪些不變的內容。掌握一種設計模式其實也就掌握一種解決方案,這些都是前人總結的知識結晶,基本都是基於特定領域解決特定的問題,咱們須要學會在前人肩膀上解決問題。

服務端開發

最近微服務火的一塌糊塗,雖然咱們基本是作移動端開發,可是基於全棧發展的趨勢,對於服務端開發勢必要了解,可能沒有實戰項目讓你真刀真槍的幹,可是對於微服務的結構理論、服務與服務之間通訊、聚合是什麼樣的流程也是須要有所耳聞,在本身擅長領域深刻專研的同時橫向擴展關注也是須要的,不能關起門來閉門造車,兩耳不聞窗外事那是不行的。

閱讀源碼

對於Android源碼和第三方庫源碼閱讀,能夠根據本身感興趣的類型,選擇相應的源碼庫或模塊,給本身約定一個時間點,看完以後最後有個流程圖,哪些是核心類,類與類之間都有什麼關係,這些開源代碼實現的機制是什麼,用到哪些解決思想,這些要點最終能夠經過文章輸出,我以爲輸出倒逼輸入是一種很不錯的學習方式。

移動AI

AI,也稱人工智能,1956年,在達特茅斯學院舉行的一次會議上正式確立了人工智能的研究領域。會議的參加者在接下來的數十年間是AI研究的領軍人物,他們中有許多人預言,通過一代人的努力,與人類具備同等智能水平的機器將會出現。如今來看AI這個概念很早就存在了,以前沒發展很大緣由是基礎設施不夠完善、研究成本高,如今可以大力發展是基於咱們的網絡帶寬變大、計算機性能提高、計算成本下降等等因素備齊了。AI是須要經過算法來落地,那麼對於算法理論背景就是數學,因此想進階AI開發,就須要去學習相關數學知識,特別是線性代數和機率論這兩門,是支撐不少算法的理論知識。

小結

總的來講,技術發展能推進社會的進步,解放生產力,進而提升人的社會生產效率,創造價值。技術落地是須要商業應用場景配合,如何配合呢,就是經過每一個不一樣商業模式來實現。最終一門技術是須要與具體使用業務緊密結合起來,若是脫離技術談業務顯得空洞,脫離業務談技術顯得偏理論,最好是二者相結合。這也就要求咱們這些從事軟件開發人員在追求技術積累的同時要注重業務積累,讓業務驅動技術發展,用技術手段來解決實際業務問題,在技術積累中,辨別哪些是不變的道,哪些又是一時流行的而已,這就須要練就一雙火眼金睛了。

相關文章
相關標籤/搜索