主頁 > 移動端開發 > 2021年為什么這么多人勸退Android開發,學習正確姿勢是什么?

2021年為什么這么多人勸退Android開發,學習正確姿勢是什么?

2021-11-02 10:26:27 移動端開發

前言

剛來的也別害怕,其實這也是內卷的一種形式,把你嚇跑了,行業內的人就能多點時間休息,不然內卷就會加劇,自己的日子也就越來越難混;還有些不思進取所謂的Android前輩,被自己同事屌,被老板屌,能留在公司都是老板施舍,轉頭就怪起行業來,實在是可笑,

不過話說回來,Android開發之所以會被勸退,還有以下幾個原因:

  • 移動紅利期已過,現在需要真才實學,門檻高了不少,不再是當年培訓班出來都可以月入一萬多的年代了;
  • 業界技術導向,國外巨頭由Mobile First轉為AI First,國內培訓班第一時間跟進,國內各大公司及時跟進,Android崗位HC不斷縮減,現在都喜歡3-5年有經驗有潛力能力強的人,對初級選手不夠友好;
  • 販賣焦慮,關于『Android失業』的震驚體自媒體文多次在朋友圈出現,『落魄的Android開發』等自黑表情包廣泛傳閱,導致很多人以為Android真的不行了,2018年GMTC也從移動端大會轉型為大前端大會,技術人關注Android的越來越少;
  • 技術趨于成熟,各大公司都有自己的移動端體系,對外分享的部分相對較少,很多東西沒有說出來,新技術較少,19年大家在移動端關注較多的應該就是Flutter了,導致大家對Android開發的熱情下降,在下降的同時,也會勸退一些想要入行的人,

Android 作為后輩,可以說從2012年以來一路摸爬滾打,也沿著前端開發的路總結出了自己的 MVC 到 MVVM 道路,

剛開始的時候,由于工程結構簡單,許多公司處于業務起步,開發模式大多沿用 findViewById 的形式,簡單粗暴,但是效率很高,不易出錯,MVC 分層思想也很實用,

隨著業務的不斷擴展,頁面也不斷增加,那么每個頁面都進行 id 的查找操作,就產生很多冗余代碼,這時候通過注解方式,在編譯時候動態生成代碼的框架層出不窮,以 Butter Knife 為代表,這大大減少了查找 id帶來的麻煩,同時編譯時運行的機制對運行效率也不會有影響,但是開發模式大多仍是 MVC 或 MVP,

看著開發業內百發齊放的框架層出不窮,Google 老大看不下去了,推出了官方推薦的開發框架JetPack , 這個框架包含很多基礎類別庫,并且到目前仍在不斷迭代,其中 ViewBindingDataBinding 的開發方式,不管是配合框架還是自己單獨使用,都是非常方便的,

ViewBinding,有點類似自動查找 id,省去了手動 findViewById 或者手動進行注解的麻煩,通過 gradle 插件,在編譯時自動將 view 和 xml 布局檔案進行了關聯,生成了xxx_binding 的類,這種方式效率很高,不易出錯,值得推薦,可以隨便網上搜一下使用方法即可,

DataBinding 就有點類似 React 或者其他的資料驅動方式了,通過固有的 xml dsl 撰寫,把資料傳進 xml,實作 view 和資料關聯,并隨資料變化而自動變化,和 MVVM 的框架思路一致,這種方式比較現代,也是編譯時通過 gradle 插件生成代碼實作,對效率基本無影響,但是我在使用中發現它有一個問題,有時候工程需要手動 clean ,以確保是使用了最新生成的代碼或是解決莫名的找不到代碼的錯誤,同時當你的 view 莫名其妙的變化與預期不符的時候,你需要仔細排查觸發事件的源頭,比較難通過代碼除錯出來,

所以當前Android正確的開發姿勢是什么?

如果你的工程簡單,只是 hybrid 的形式,用 findViewById 配合 MVC 沒什么不好,簡單粗暴,卻清晰易懂,

如果頁面不斷增多,懶得寫這些,用 Butter Knife ,甚至連注解也懶得寫,用 ViewBinding,

如果業務邏輯復雜,還要考慮分層,從 MVC 向 MVP 轉變,

當然,如果你開發熟練了,不會被一些錯誤搞得不知所措,那你可以用 DataBinding,

可以根據業務情況參考使用 JetPack 的部分模塊去優化工程,減少出錯,比較常用的比如 ViewModel,Livedata,LifeCycle 這種,

不管做任何技術行業,都必須要面對技術革新來做出一系列應對方式,比如刻苦學習新技術,轉行,直接努努力當個管理,我這里說的并不是真正意義上的內卷,內卷是什么,簡單提一嘴:

以前高中都是4點半放學,省排名前60的同學有機會上清華,

現在高中晚上10點半放學,節假日壓縮,還是省排名前60的同學能上清華,

成本提高,但是原本就屬于自己的收益卻沒有提高,這便是讓職業人聞風喪膽的“內卷”

與其無意義的內卷,想要逃離這個圈子,就必須把自己武裝起來,形成自己的技術壁壘,你放心,多的是人每天加班就是劃水,你只需要付出一點點努力就能超越一大部分人了,

技術方向的選擇

以下的Android技術方向以及其包含的知識點,都整理了一份筆記,有需要的可以找我拿:

獲取地址:【Android技術交流】

架構師筑基必備技能

目前Android APP開發主流語言就是Java語言,Java語言最大的特性就是提高了軟體的互動可能性,可以說安卓手機幾乎所有應用程式都是利用Java語言來進行撰寫的,

JAVA知識要點:
1、 Java序列化、泛型與反射
2、虛擬機底層原理
3、Android記憶體原理
4、 Java高級并發原理詳解
5、 編譯時技術掌握與實戰
6、JDK高級動態代理
7、高級資料結構與演算法
8、 Java IO操作
9、
,,,,

Android R FrameWork原始碼與UI

在Android中,Framework泛指系統架構層,Framework的中文意思是“框架”,在軟體開發中通常指開發框架,在一個系統中處于內核層之上,為頂層應用提供介面,被設計用來幫助開發者快速開發頂層應用,而不必關心系統內核運行機制,通常Framework都會隱藏main函式等應用程式必須的組件,開發人員只需把精力放在功能代碼的實作上,說簡單點,Framework具體的作業也就是為android應用開發的開發人員提供了一系列的服務和API的介面,

UI其實并不是單純指用戶看到的效果,因為在Android開發中,每個控制元件背后都有一套深層次的體系在支撐,自然而然,會UI不單純指的是會自定義控制元件,我們還應該知道自定義控制元件背后的執行流程,包括從Activity的創建,XML的決議,到每個控制元件的測量、布局、繪制,當然在中間還夾雜著比如影片、事件分發機制、嵌套滑動機制等知識點,還有谷歌提供的一些UI框架也使我們要掌握的物件,比如Jetpack組件庫、Material Design等,

知識要點:
1、 FrameWork原始碼決議(SDK 30)
2、Android常用組件深入決議
3、JetPack全家桶
4、Android R新特性決議
,,,,,

大廠內部APP調優方案

性能優化是一個專案必須要經歷的程序,你的應用好與壞都是在用戶使用的程序中反映出來的,如果性能優化沒有做好,對于你的應用來說影響是非常大的,尤其是現在的Android市場競爭非常激烈,如果你的應用體驗沒有競品的好,那么用戶流失是必然的,

性能優化不是一件簡單的事情,每個應用的性能好與壞無法由一個人來決定,因為性能優化的維度有太多了,從我們專案的整體架構,到我們代碼的每一個細節,再到應用使用環境的測驗,只有步步為營,才能做好一個專案的優化,大部分開發者把性能優化指向與不閃退就行,但是實際上性能優化包含了很多方面,比如從簡單的啟動優化、 UI優化、 卡頓優化、 崩潰優化、 安全性優化,到深層次的弱網優化、 大圖加載優化、 儲存優化、 高效傳輸優化、 極限瘦身優化,再到實際開發程序中的OOM問題原理決議、 ANR問題決議、 Crash監控方案,要想把這些優化流程做好,我們不僅從專案架構、代碼規范等方面入手,還用學會利用第三方的檢測工具來檢測專案性能,最主要是,我們需要一套完整的性能優化方案,這正是我們所缺少的,所以我們必須要把缺少的補上, 打造一套真正的完整的性能優化體系,把性能優化流程化,常態化,

1、 APP基礎優化
2、APP深度優化
3、開發焦點問題優化
4、編程效率優化
5、專案實戰
抖音在APK包大小資源優化的實踐
優酷回應式布局技術全決議
網路優化
手機淘寶雙十一性能優化專案揭秘
高德APP全鏈路原始碼依賴分析
徹底干掉OOM的實戰經驗分享
微信Android終端記憶體優化實踐

對標騰訊T3.3架構師

Android框架體系架構(高級UI+FrameWork原始碼) 這塊知識是現今使用者最多的,我們稱之Android2013~2016年的技術,

Android開發者也往往因為網上Copy代碼習慣了而導致對這塊經常“使用”的代碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道, 天天在復制這些代碼 ;陌生的是雖然天天和這些代碼打交道,但是并沒有深入研究過這些代碼的原理,代碼深處的內涵,

本篇知識要點:
1、架構師設計思想篇
2、 手淘全套架構設計與實作
3、 開源框架
4、OKHttp網路框架
5、一線大廠核心框架剖析與實作

NDK模塊開發(音視頻系列)

NDK(Native Development Kit縮寫)一種基于原生程式介面的軟體開發工具包,可以讓您在 Android 應用中利用 C 和 C++ 代碼的工具,通過此工具開發的程式直接在本地運行,而不是虛擬機,

在Android中,NDK是一系列工具的集合,主要用于擴展Android SDK,NDK提供了一系列的工具可以幫助開發者快速的開發C或C++的動態庫,并能自動將so和Java應用一起打包成apk,

本篇知識要點:
1、NDK開發之C/C++入門
2、JNI模塊開發
3、Linux編程
4、底層圖片處理
5、音視頻開發
6、機器學習

Flutter學習進階

2021 年無疑是 Flutter 技術如火如荼發展的一年,

每一個移動開發者都在為 Flutter 帶來的“快速開發、富有表現力和靈活的 UI、原生性能”的特色和理念而癡狂,從超級 App 到獨立應用,從純 Flutter 到混合堆疊,開發者們在不同的場景下樂此不疲的探索和應用著 Flutter 技術,也在面臨著各種各樣不同的挑戰,

本篇知識要點:
1、Flutter跨平臺開發概述
2、Windows中Flutter開發環境搭建
3、撰寫你的第一個Flutter APP
4、Flutter Dart語言系統入門

微信小程式開發

微信小程式作為現在比較火的編程開發應用場景之一,深受市場的青睞,這讓不少開發者眼饞不已,但是對于初學者來說,就完全摸不著頭腦了,不知道微信小程式開發制作需要學習那些知識,有需要的朋友可以參考本篇,

本篇知識要點:
1、小程式概述及入門
2、小程式UI開發
3、API操作
4、購物商場專案實戰

獲取地址:Android技術交流

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344291.html

標籤:其他

上一篇:flutter的安裝與設定

下一篇:【Flutter原理】平臺視圖整合Hybrid composition分析

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more