Android-Camera内存问题剖析,小白也能看明白
安卓基礎知識
安卓基礎知識確實很多,如果日常積累不夠的話確實比較頭暈,比如我承認我只在 APP 升級的時候搞過一個前臺的 Service,但是面試的時候就會問你 Service 生命周期,如何綁定,如何跨進程通訊,如何關閉Service 等等,你肯定不能說"我沒用過我不會"。
所以我們就要復習,一來我們可以應付面試,二來我們也可以通過基礎知識的積累來提高我們的能力。
JetPack里的組件
上圖就是JetPack中包含的組件列表,每個組件都是相對獨立的,可以被單獨使用和構建。其中像被介紹的最多,也是最常被使用的LiveData, ViewModel, Room, Navigation, WorkManager之類的都發布了正式版,而CameraX, Compose之類的還處在Alpha版本,未正式發布,官方并不建議在生產環境中使用。
然后說下,JetPack所有的組件都是基于AndroidX構建的,如果想在項目中使用JetPack需要先將項目中對Support Lib的依賴全部換成AndroidX。
Android目前已經發展了11年,可以說是比較成熟的技術了,一開始時框架很少,也沒有什么規范,所有的代碼都是要自己寫,比如網絡請求,數據庫請求,數據解析等等。后來出現了一些框架來幫助開發者快速進行開發,比如XUtils、Volley、OKHttp、EventBus等,隨著框架越來越多,一個應用可以有多種技術選型,直接導致應用開發越來越不規范,導致做出來的應用質量參差不齊,這顯然不是谷歌想看到的。谷歌隨后推出了MVP和MVVM相關的官方例子,效果很一般,而且覆蓋面只是在架構上,Goole I/O 2018大會上推出的Android Jetpack有望解決以上的問題。
三、Android Jetpack簡介
Jetpack并不是一個框架或者組件,它是一套庫、工具和指南的集合,可幫助開發者更輕松地編寫優質應用。這些組件可幫助開發者遵循最佳做法、擺脫編寫樣板代碼的工作并簡化復雜任務,以便將精力集中放在所需的代碼上。
Android Jetpack中的很多組件并不都是新開發的,而是很早就有了,比如在Goole I/O 2017大會時推出了 Android Architecture Component(AAC),它包括了LifeCycle、LiveData、ViewModel、Room。在Goole I/O 2018大會上,
用AndroidX替代了Android Support Library,并在Android Architecture Component的基礎上發布了Android Jetpack,AndroidX也是屬于Android Jetpack。
Jetpack主要特性有以下三點:
1.加速開發
組件可單獨使用,也可以協同工作,當使用kotlin語言特性時,可以提高效率。
2.消除樣板代碼
Android Jetpack可管理繁瑣的Activity(如后臺任務、導航和生命周期管理)。
3.構建高質量的強大應用
Android Jetpack組件圍繞現代化設計實踐構建而成,具有向后兼容性,可以減少崩潰和內存泄漏。
四、Android Jetpack分類
下圖是Jetpack的分類。
谷歌仍舊不斷的完善Android Jetpack,截至到2019年8月已經有很多新加的組件并沒有顯示在上圖中,比如CameraX等。Android Jetpack分類有4種,分別是Architecture、Foundationy、Behavior、UI,下面分別介紹下。
1. Architecture(架構組件)
Architecture指的是架構組件,幫助開發者設計穩健、可測試且易維護的應用。架構組件可以說是對應用開發幫助最大的組件,本系列也是圍繞著架構組件進行講解。
DataBinding:以聲明方式將可觀察數據綁定到界面元素,通常和ViewModel配合使用。
Lifecycle:用于管理Activity和Fragment的生命周期,可幫助開發者生成更易于維護的輕量級代碼。
LiveData: 在底層數據庫更改時通知視圖。它是一個可觀察的數據持有者,與常規observable不同,LiveData是生命周期感知的。
Navigation:處理應用內導航。
Paging:可以幫助開發者一次加載和顯示小塊數據,按需加載部分數據可減少網絡帶寬和系統資源的使用。
Room:友好、流暢的訪問SQLite數據庫。它在SQLite的基礎上提供了一個抽象層,允許更強大的數據庫訪問。
ViewModel: 以生命周期的方式管理界面相關的數據,通常和DataBinding配合使用,為開發者實現MVVM架構提供了強有力的支持。
WorkManager: 管理Android的后臺的作業,即使應用程序退出或設備重新啟動也可以運行可延遲的異步任務。
官方推薦的Android應用架構如下圖所示。
這些架構組件既可以配合使用,也可以單獨使用,這里建議還是盡量按照官方推薦的來。
2. Foundationy(基礎組件)
基礎組件提供橫向功能,例如向后兼容性、測試、安全、Kotlin 語言支持,并包括多個多個平臺開發的組件。
Android KTX:優化了供Kotlin使用的Jetpack和Android平臺API。幫助開發者以更簡潔、更愉悅、更慣用的方式使用Kotlin進行Android開發。
AppCompat:幫助較低版本的Android系統進行兼容。
Auto: 開發Android Auto應用的組件,提供了適用于所有車輛的標準化界面和用戶交互。
檢測:從AndroidStudio中快速檢測基于Kotlin或Java的代碼。
多Dex處理:為具有多個Dex文件應用提供支持。
安全:安全的讀寫加密文件和共享偏好設置。
測試:用于單元和運行時界面測試的Android 測試框架。
TV: 構建可讓用戶在大屏幕上體驗沉浸式內容的應用。
Wear OS:開發Wear應用的組件。
3. Behavior(行為組件)
行為組件可幫助開發者的應用與標準Android服務(如通知、權限、分享)相集成。
CameraX:幫助開發簡化相機應用的開發工作。它提供一致且易于使用的界面,適用于大多數Android。 設備,并可向后兼容至Android 5.0(API 21)。
DownloadManager:處理長時間運行的HTTP下載的系統服務。
媒體和播放:用于媒體播放和路由(包括Google Cast)的向后兼容API。
通知:提供向后兼容的通知API,支持Wear和Auto。
權限:用于檢查和請求應用權限的兼容性API。
設置:創建交互式設置,建議使用AndroidX Preference Library庫將用戶可配置設置集成到應用中。
分享操作:可以更輕松地實現友好的用戶分享操作。
切片:切片是一種UI模板,創建可在應用外部顯示應用數據的靈活界面元素。
4. UI(界面組件)
Animation and Transition:該框架包含用于常見效果的內置動畫,并允許開發者創建自定義動畫和生命周期回調。
Emoji Compatibility:即便用戶沒有更新Android系統也可以獲取最新的表情符號。
Fragment:組件化界面的基本單位。
布局:用XML中聲明UI元素或者在代碼中實例化UI元素。
調色板:從調色板中提取出有用的信息。
五、在應用中引入Jetpack相關組件
在項目build.gradle中添加google() 庫,如下所示。
allprojects {repositories {google()jcenter()}}如果想引入Room,可以在模塊build.gradle中這么寫:
implementation "android.arch.persistence.room:runtime:1.1.1"annotationProcessor "android.arch.persistence.room:compiler:1.1.1 "androidTestImplementation "android.arch.persistence.room:testing:1.1.1"總結
這篇文章內部不多,旨在讓大家了解Android Jetpack是什么,包括什么,如何引用,從下一篇開始,就開始學習Android Jetpack的架構組件。
最后對于程序員來說,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提升自己,從來都是我們去適應環境,而不是環境來適應我們!
建議
當我們出去找工作,或者準備找工作的時候,我們一定要想,我面試的目標是什么,我自己的技術棧有哪些,近期能掌握的有哪些,我的哪些短板 ,列出來,有計劃的去完成,別看前兩天掘金一些大佬在駁來駁去 ,他們的觀點是他們的,不要因為他們的觀點,膨脹了自己,影響自己的學習節奏?;A很大程度決定你自己技術層次的厚度,你再熟練框架也好,也會比你便宜的,性價比高的替代,很現實的問題但也要有危機意識,當我們年級大了,有哪些亮點,與比我們經歷更旺盛的年輕小工程師,競爭。
-
無論你現在水平怎么樣一定要 持續學習 沒有雞湯,別人看起來的毫不費力,其實費了很大力,這四個字就是我的建議!!!!!!!!!
-
準備想說怎么樣寫簡歷,想象算了,我覺得,技術就是你最好的簡歷
-
我希望每一個努力生活的it工程師,都會得到自己想要的,因為我們很辛苦,我們應得的。
-
有什么問題想交流,歡迎給我私信,歡迎評論
【附】相關架構及資料
資料領取
點擊這里免費獲取
內含往期Android高級架構資料、源碼、筆記、視頻。高級UI、性能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程序、Flutter全方面的Android進階實踐技術
5%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**
內含往期Android高級架構資料、源碼、筆記、視頻。高級UI、性能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程序、Flutter全方面的Android進階實踐技術
總結
以上是生活随笔為你收集整理的Android-Camera内存问题剖析,小白也能看明白的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民族美术类毕业论文文献有哪些?
- 下一篇: 丹佛斯冷媒尺汉化下载_下载适用于Andr