在碌碌的踩坑填坑之后,總要學(xué)會聰明一些不是,一定要記得不要一個坑里掉進兩次,一定要勇于突破自己的慣性在優(yōu)秀的人身上發(fā)現(xiàn)優(yōu)點學(xué)習(xí)優(yōu)點,結(jié)果不一定好但是嘗試了才知道
真理和道理很多非常多吠勘,難的不是去發(fā)現(xiàn)真理,是在茫茫規(guī)則中找平衡彤灶。
不要輕易的去** 粗暴的 **解決問題看幼,挖的坑多了遲早要還的
開發(fā)的測試機盡量用中低端機器,要在開發(fā)層面就做好兼容低端機的打算
要有查看GPU呈現(xiàn)模式分析的習(xí)慣幌陕,不然丟幀等現(xiàn)象堆到一起的時候很難優(yōu)化
在使用任何第三方框架的時候诵姜,請確認:
1.這個框架是否足夠成熟,是否有足夠的人踩了足夠的坑
2.是否對程序的性能會有影響(謹(jǐn)慎使用注入框架)
2.你要功能只是這個框架的多少?SharedPreferences
是線程間安全的棚唆,但是是進程間不安全的暇赤,針對不同數(shù)據(jù)存儲的需求選用不同方式,不要一味的只會使用數(shù)據(jù)庫保存數(shù)據(jù),面向?qū)γ娲鎯?shù)據(jù)真的很方便ObjectSharePreference-
如果需要使用Context宵凌,區(qū)分清楚Application鞋囊、Activity、Context瞎惫、Service分別都能做什么事情!對于Application溜腐,Service,Activity三者的Context的應(yīng)用場景如下:
其中: NO1表示 Application 和 Service 可以啟動一個 Activity瓜喇,不過需要創(chuàng)建一個新的 task 任務(wù)隊列挺益。而對于 Dialog 而言,只有在 Activity 中才能創(chuàng)建
當(dāng)前Activity的onPause方法執(zhí)行結(jié)束后才會執(zhí)行下一個Activity的onCreate方法乘寒,所以在onPause方法中不適合做耗時較長的工作望众,這會影響到頁面之間的跳轉(zhuǎn)效率(記得時刻關(guān)注程序的性能在哪被消耗了)
一些公共類使用單例可以讓代碼很大程度解耦,但是不要養(yǎng)成動不動就使用單例粗暴的解決問題(注意對象引用伞辛,注意內(nèi)存泄露)
RxJava 可能是 AsyncTasks 以及其它并發(fā)業(yè)務(wù)的最佳替代者
Retrofit可能是當(dāng)前最佳的網(wǎng)絡(luò)框架解決方案(反正我現(xiàn)在是這么覺得的)
謹(jǐn)慎使用 Lambda來簡(裝)化(逼)你的代碼烂翰,真的可讀性不是很好啊(當(dāng)然相當(dāng)熟悉多人協(xié)作的情況下,Lambda優(yōu)勢還是很明顯的)
使用事件總線(如:EventBus)能夠很好解耦你的代碼蚤氏,但是事件亂飛的情況很難跟蹤代碼流程甘耿!
Application
中盡量少做事,你真的很清楚Application的生命周期么竿滨?
and 不要在Android的Application對象中緩存數(shù)據(jù)!謹(jǐn)慎使用
AnimationDrawable
或者Gif圖片棵里,對內(nèi)存壓力很大的(當(dāng)然除非你對你的內(nèi)存把控很自信),那么問題來了:為什么官方?jīng)]有提供相關(guān)的Gif的API調(diào)用姐呐?很多項目是按照Class的類別分類的,但是當(dāng)項目越來越大典蝌,有沒有發(fā)現(xiàn)包的結(jié)構(gòu)十分混亂曙砂,當(dāng)找一個固定類的代價越來越大?@See:包名按照功能來骏掀,而不是按分層來;
-
Handler
屬于 TLS(Thread Local Storage) 變量, 生命周期和 Activity 是不一致的鸠澈。因此這種實現(xiàn)方式一般很難保證跟 View 或者 Activity 的生命周期保持一致,故很容易導(dǎo)致無法正確釋放截驮。推薦使用靜態(tài)內(nèi)部類 + WeakReference 這種方式笑陈。每次使用前注意判空。
記錄一下JAVA對象的幾種引用類型(Strong reference, SoftReference, WeakReference, PhatomReference)
JAVA對象的幾種引用類型 使用
AsyncTask
的同學(xué)請注意了葵袭,Anroid中不同API版本的AsyncTask
實現(xiàn)不一樣涵妥,對執(zhí)行任務(wù)的策略是不一樣的,@See:調(diào)用AsyncTask的excute方法不能立即執(zhí)行程序的原因分析及改善方案 So,這里就推薦使用RxJava
了坡锡,雖然學(xué)習(xí)成本有些大欲善其事必利其器
你是真的會用studio么蓬网?當(dāng)然我也不是特別會用╮(╯_╰)╭,推薦幾個我覺得好的Android studio lint(代碼規(guī)范窒所,代碼檢查),
GsonFormat(根據(jù)Json生產(chǎn)java bean帆锋,和服務(wù)器交互不要太快),
simpleUMLCE(第三方的IDE插件吵取,能夠直接生成類圖,很推薦)
感覺這里可以說的太多锯厢,以后補充*如果你的現(xiàn)有項目是Eclipse工程那么皮官,Eclipse轉(zhuǎn)Android Studio的過程中有必要弄明白的一些問題,你需要了解多一些AS的相關(guān)知識
使用 依賴注入 讓你的app更模塊化实辑,從而更易于測試捺氢;
(dagger2
感覺還是很牛逼畢竟是Google出品,但是別問我我也沒用過徙菠,我只用過簡單的Butterknife
)開始考慮用SVG來替代PNG (記得最早SVG出來時淘寶就用的SVG動畫做的啟動頁面讯沈,那效果飛起來了,但是現(xiàn)在好像好沒有直接把圖片轉(zhuǎn)換成SVG的工具(⊙_⊙))
針對不同網(wǎng)絡(luò)連接情況婿奔,制定不同的網(wǎng)絡(luò)策略缺狠,例如:移動連接的時候顯示小圖,Wifi的時候顯示大圖萍摊,Wifi的時候下載緩存更多東西挤茄。
時刻關(guān)注大公司在做什么事情,Google就不用說了冰木,這篇文章很有意思國內(nèi)Top500Android應(yīng)用分析報告穷劈,可以獲取的信息量有點大,在這就不班門弄斧了
使用套路開發(fā)你的應(yīng)用踊沸,不管是MVP歇终、MVVM,T-MVP,Clean,持續(xù)去維護它逼龟,去思考去更新它评凝,慢慢的就走上了通往大牛的路上!此記共勉腺律!
節(jié)制的使用
Service
奕短,如果應(yīng)用程序需要使用Service
來執(zhí)行后臺任務(wù)的話,只有當(dāng)任務(wù)正在執(zhí)行的時候才應(yīng)該讓Service
運行起來匀钧。當(dāng)啟動一個Service
時翎碑,系統(tǒng)會傾向于將這個Service
所依賴的進程進行保留,系統(tǒng)可以在LRUcache當(dāng)中緩存的進程數(shù)量也會減少之斯,導(dǎo)致切換程序的時候耗費更多性能日杈。-
Android中Touch事件傳遞
Touch事件傳遞