Android开发如何进阶,薪资如何跟上年龄的脚步?,深度解读Netty
封裝、繼承、多態(tài)。
2 . 程序設(shè)計(jì)的6大原則:
-
單一職責(zé)原則
-
里氏替換原則
-
依賴倒置原則
-
接口隔離原則
-
迪米特法則
-
開閉原則
了解這6大設(shè)計(jì)原則是非常有必要的,它能指導(dǎo)你的程序整個結(jié)構(gòu)的設(shè)計(jì)和規(guī)范。要想提高你的代碼質(zhì)量,請熟記這幾個原則。在我們設(shè)計(jì)類、方法、接口的時候,請遵循這些原則。
3 . 設(shè)計(jì)模式
-
單例模式 :double check 雙重加鎖方式、靜態(tài)內(nèi)部類方式、枚舉方式。
-
構(gòu)造器模式
-
模板方法模式
-
裝飾器模式
-
觀察者模式
-
責(zé)任鏈模式
-
策略模式
23種設(shè)計(jì)模式就不一一列舉了,不管你是工作了5年還是工作了1年,學(xué)習(xí)一下設(shè)計(jì)模式吧,這有助于打開你的編程思維。
4 . Java 字符串相關(guān)
Java 字符串相關(guān)的三個類:String、StringBuilder、StringBuffer?,你知道他們的區(qū)別嗎?這也是面試中比較常問的,如果你還不知道?那就去查查資料吧。
5 . Java 線程池
線程池方面,JDK 為我們內(nèi)置了幾種線程池:
-
**newFixedThreadPool:**newFixedThreadPool,創(chuàng)建固定大小的線程池,poolCoreSize和maxPoolSize 相等,到達(dá)coreSize,則將新的任務(wù)放到緩存隊(duì)列,有線程執(zhí)行完畢,直接去取。
-
**newSingleThreadExecutor:**newSingleThreadExecutor,創(chuàng)建一個單線程的線程池,核心池的大小和最大池大小都為1.
-
**newCacheThreadPool:**newCacheThreadPool,無大小限制的線程池,提交一個任務(wù)就創(chuàng)建一個線程執(zhí)行。
如果默認(rèn)的幾種線程池還不能滿足你的需求,那就試一試自定義線程池吧!自定義線程池繼承ThreadPoolExecutor。
6 . Java 集合
集合是Java中用得最多的了吧,你也面試的必問題之一,對于Java集合,你的腦袋里要熟記它的整個框架圖:
Collection
(1) List:
-
LinkedList
-
ArrayList
-
Vector
(2) Set
-
HashSet
-
TreeSet
Map:
-
HashMap
-
TreeMap
-
HashTable
我們需要知道每個容器的特性,以及它們的擴(kuò)容方式(這個很重要)。根據(jù)我們的數(shù)據(jù)大小、特定場景、業(yè)務(wù)邏輯來選擇合適的容器。
7 . Java 內(nèi)存模型
Java 內(nèi)存模型這一塊非常重要,因?yàn)樗婕暗轿覀兂绦虻男阅?#xff0c;我們需要知道,內(nèi)存是如何分配的,成員變量、靜態(tài)變量、局部變量、對象等各自分配到哪一個區(qū):
-
棧內(nèi)存
-
堆內(nèi)存
垃圾回收機(jī)制:
涉及到內(nèi)存,我們就需要知道java的垃圾回收機(jī)制,雖然Java 不像c++一樣需要我們自己分配內(nèi)存、釋放內(nèi)存。但是我們還是需要知道它的回收機(jī)制,分代回收:
-
年輕代:1 Eden 區(qū) 和2個Survivor 區(qū)
-
年老代
-
永久代
分代回收分為了三個代,每個代的垃圾回收時機(jī)和頻率是不一樣的,因此才用的回收算法也不一樣。
總的來說:年輕代的回收頻率很高,對象的生命周期比較短暫,當(dāng)經(jīng)過一定次數(shù)的回收周期之后,年輕代的對象還存活的話,就會被移動到年老代,年老代的回收比較耗時,回收頻率較低,回收成本較大。
Java 基礎(chǔ)總結(jié):關(guān)于Java基礎(chǔ)暫時就總結(jié)了這些,這些都是Android 開發(fā)中比較常用或者常常需要關(guān)心的一些東西。如果你想比較系統(tǒng)的學(xué)習(xí)Java基礎(chǔ)相關(guān)的東西,推薦你去看一下經(jīng)典書籍《Thinking in Java》。
二、Android 基礎(chǔ)
就像建造房屋一樣,要建造一座宏偉的建筑,首先得打牢根基。同樣的,作為Android 開發(fā)者,要想走的更遠(yuǎn),也要學(xué)好Android基礎(chǔ)。
1 . Android 四大組件
Android四大組件是Android的根本,從我們學(xué)習(xí)Android 時候,就先認(rèn)識了它們:
-
Activity
-
Service
-
BroadcastReceiver
-
ContentProvider
Activity:
Activity 再熟悉不過了吧,我們APP 所能看到的活動界面就是一個個Activity,說到Activity,我們得知道:
-
1,Activity 的生命周期
image
- 2,Activity 的幾種啟動方式:
standard
SingleTask
SingleTop
SingleInstance
請記住這幾種啟動方式的區(qū)別。
-
3,Activity 間傳如何遞數(shù)據(jù)?
-
4,Activity 橫豎屏切換生命周期有哪些變化?
-
5,顯示Intent 和隱式Intent 有和區(qū)別?
Service:
Service 也是我們用得比較多的一個組件,關(guān)于Service ,我們需要知道:
-
Service 的生命周期
-
Service 的兩種啟動方式:
1, startService
2, bindService
2種啟動方式 所走的生命周期方法是不一樣的
- Service vs IntentService:
Service 和IntentService 個自用于不同的場景,想知道他們各自的使用場景和區(qū)別嗎?查資料去吧!
BroadcastReceiver:
廣播相關(guān)的知識點(diǎn):廣播有兩種注冊方式,Manifest 清單文件中注冊和 代碼中動態(tài)注冊,代碼中注冊的廣播一般為局部廣播,最好?register?和?unRegister?成對出現(xiàn),別忘了反注冊。
全局廣播可以跨應(yīng)用訪問,存在安全隱患并且效率不高,因此出現(xiàn)了更安全、更高效的替代者:LocalBroadcastReceiver,使用非常簡單。如果在代碼中看到的是LocalBroadcastReceiver而不是BroadCastReceiver,我會給你加分。
ContentProvider
ContentProvider 可能用得不是很多,可以用于共享數(shù)據(jù),提供數(shù)據(jù)源,掌握會寫增刪改查就好了。
啰嗦一下:四大組件需要在清單文件中聲明。
2 . Android 常用的幾種布局
-
1,幀布局 FrameLayout
-
2,線性布局 LinearLayout
-
3,相對布局 RelativeLayout
-
4,Google 新出的約束布局ConstraintLayout
3 . Android Studio
Android Studio 是我們Android開發(fā)的常用工具,熟練操作和使用上面的快捷鍵和一些插件,對我們的開發(fā)效率有很大的幫助。
Android Studio 有很多好用的插件,可以根據(jù)自己的需要安裝,如:
-
GsonFormat
-
Parcelable 序列化
-
翻譯插件:對于英文不是很好的很有幫助。
除了一些好用的插件之外,還可以根據(jù)自己的習(xí)慣設(shè)置一些快捷鍵,總之,工欲善其事,必先利其器。要提高開發(fā)效果,先配置好我們的開發(fā)工具。
4 . Fragment
-
1,Fragment 的生命周期
-
2,Fragment 與fragment 之間的通訊方式
-
3,Fragment 與Activity 之間的通訊方式
-
4,Fragment + ViewPager 懶加載
-
5,Fragment +TabLayout 選項(xiàng)卡
5 . 數(shù)據(jù)庫相關(guān)
Android 自帶數(shù)據(jù)庫 Sqlite, 關(guān)于數(shù)據(jù)庫,我們應(yīng)該熟悉:
-
1,數(shù)據(jù)庫和表的創(chuàng)建
-
2,數(shù)據(jù)的增刪、改、查。
-
3,數(shù)據(jù)庫升級:
這點(diǎn)尤為重要,因?yàn)閿?shù)據(jù)庫的升級往往伴隨著數(shù)據(jù)的升級,不能升級之后把前面的用戶數(shù)據(jù)弄沒了。
- 4,三方庫:GreenDao:
如果你覺得自己做這些操作很麻煩的話,你可以選擇你一些三方的庫
《Android學(xué)習(xí)筆記總結(jié)+最新移動架構(gòu)視頻+大廠安卓面試真題+項(xiàng)目實(shí)戰(zhàn)源碼講義》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整內(nèi)容開源分享
,如GreenDao,已經(jīng)為你封裝了所有的這些操作,只需簡單配置就能使用。當(dāng)然,Github 上還有很多類似的庫,根據(jù)自己的需要選擇。
6 . 常用控件基礎(chǔ)控件
-
1,RecyclerView & ListView
-
2,ViewPager
-
3,TextView
-
4,ImageView
-
5,Button
-
6,Checkbox
-
7,RadioButton
所有復(fù)雜的界面都由這些簡單的基礎(chǔ)控件組成,因此,你需要好好了解一下他們的各種屬性。
三、Android 進(jìn)階
上面列舉了一些Android的基礎(chǔ)知識點(diǎn),僅僅熟悉這些還不夠,還需要學(xué)習(xí)Android開發(fā)中更高級一點(diǎn)的東西:
1 . View
上面列舉了一些基礎(chǔ)的View和控件,但是這些基礎(chǔ)控件有時候不能滿足我們的需求,這時候就需要自定義View了。
自定義View:
自定義view 的三種方式:
-
1,組合基礎(chǔ)控件
-
2,繼承基礎(chǔ)控件,做相應(yīng)的更改。
-
3,繼承View 或 ViewGroup:
這種方式也是我們用的比較多的一種方式,這種方式比較自由,定制度高,需要實(shí)現(xiàn)下面幾個方法
(1)?onMeasure()
(2)?onLayout()
(3)?onDraw()
執(zhí)行順序?yàn)?#xff1a;onMeasure()->onLayout()?->?onDraw()。
View事件分發(fā)機(jī)制:
自定義view 的時候,我們需要響應(yīng)用戶的各種事件,這個時候我們就需要了解View的事件分發(fā)機(jī)制了。
關(guān)于事件分發(fā)機(jī)制,看一張比較經(jīng)典的圖(U型圖):
image
當(dāng)這幾個方法都調(diào)用super 的時候,整個事件會走完這個U型圖。
事件分發(fā)機(jī)制這一塊還是比較難理解的,更多詳解請查資料。
App 的幾種架構(gòu)
-
MVC
-
MVP
-
MVVM
常見的三種架構(gòu),根據(jù)自己的業(yè)務(wù)需要選擇,每種架構(gòu)都有自己的有點(diǎn)和缺點(diǎn),另外,我覺得一個APP 中,多種架構(gòu)是可以并存的,比如:MVC和 MVP 。一個非常簡單的展示界面,不必為它弄一個 P 層,反而變得復(fù)雜了。
3 . Android 動畫
(1) Android 中的5種基礎(chǔ)動畫
-
平移動畫
-
縮放動畫
-
旋轉(zhuǎn)動畫
-
Alpha 動畫
-
幀動畫
(2) 屬性動畫
補(bǔ)間動畫很簡單,但是它的場景使用很有限,它只能對一個View做動畫。有的時候,我們需要更為精準(zhǔn)的控制,我們要控制一個屬性來做動畫,這個時候?qū)傩詣赢嬀团缮嫌脠隽恕傩詣赢嫷膸讉€相關(guān)類:
-
ObjectAnimator
-
ValueAnimator
-
AnimatorSet
屬性動畫用得就比較廣泛了,屬性動畫 + 自定義View 配置 Path和貝塞爾曲線 能做出很多復(fù)雜的漂亮的效果。
(3)矢量動畫
-
svg
-
VectorDrawable
-
AnimatedVectorDrawable
矢量動畫大家可能比較陌生,Android Studio 支持將一個Svg 文件導(dǎo)入生成一個path 路徑,用VectorDrawable 和AnimatedVectorDrawable 來實(shí)現(xiàn)矢量動畫。但是需要在Android5.0 以上。
4 . Material Design 系列
Android 5.0 開始,Google 推出了 Material Design 設(shè)計(jì)規(guī)范,Android support 包中也加入了符合Material Design 設(shè)計(jì)規(guī)范的各種控件:
-
1,Toolbar 的使用
-
2,AppbarLayout+CollapsingToolbarLayout
-
3, Behavior 相關(guān):
(1),BottomSheetBehavior
(2), BottomSheetDialog
(3),SwipeDismissBehavior
(4), 自定義Behavior
-
4, TextInputLayout + TextInputEditText
-
5, TabLayout
-
6, BottomNavigationView
-
7 , CardView 陰影卡片
-
8 ,Snackbar , FloatActionButton
利用這些控件,可以做出很多符合material Design 設(shè)計(jì)規(guī)范的效果和動畫。
更多關(guān)于Material Design 的用法,請看我的系列博客
:http://www.jianshu.com/u/35167a70aa39
5 . Android 多媒體
多媒體相關(guān)也是Android 開發(fā)中比較重要并且較難的一塊了,它設(shè)計(jì)到相機(jī)、視頻、音頻相關(guān)的開發(fā)。
相機(jī)開發(fā):
1, 使用自帶的相機(jī)APP 拍照
2,系統(tǒng)相冊選擇照片
3,系統(tǒng)相機(jī)或相冊獲取的照片裁剪
4,使用相機(jī)API 開發(fā)相機(jī):
(1), Android 5.0 (API 21 )以下 使用Camera API
(2) , Android 5.0 以上使用 Camera2 API
5 ,自定義相冊開發(fā)
6 , 自定義裁剪界面
Android視頻開發(fā):
(1)視頻播放
MediaPlayer
VideoView
(2)視頻編解碼
音頻開發(fā):
AudioPlayer
音樂播放器
音視頻開發(fā)這一塊門檻較高,但是這也是比較吃香的一個領(lǐng)域,把這一塊吃透了,你的優(yōu)勢就很大了,現(xiàn)在的直播這么火,對于這一塊的需求還是比較大的。
6 . Git
Git 版本控制 也是我們常用的,熟悉各種Git 命令。對于代碼的提交、代碼拉取,歷史版本的查看等Android Studio 已經(jīng)集成好了,但是還是推薦大家日常用命令行方式操作,這樣有助于我們熟悉各種Git 命令。
7. Android 權(quán)限適配
Android 6.0 以上權(quán)限適配。
8 . Gradle
-
自定義Gradle插件
-
Gradle 多渠道打包
以上就是Android 相關(guān)的一些知識點(diǎn)。
四、學(xué)習(xí)了解開源庫
Github 絕對是我們程序員的寶貴財(cái)富,上面有各種各樣的開源庫,只有你想不到的,沒有你找不到的。各大公司也有各種各樣的開源的解決方案。
以下是比較流行的一些框架:
圖片加載框架:
-
Universal-Imageloader
-
Picasso
-
Glide
-
Frecssco
網(wǎng)絡(luò)相關(guān)框架:
-
Retrofit
-
Okhttp
-
Volley
RxJava :
-
RxJava
-
RxAndroid
總結(jié)
以上是生活随笔為你收集整理的Android开发如何进阶,薪资如何跟上年龄的脚步?,深度解读Netty的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: postgresql 数据库表隐藏列 o
- 下一篇: 用altium designer 如何按