回家吃飯Android客戶端整理后總結(jié)

http://www.jiashuangkuaizi.com/

來到回家吃飯五個月了狐树!客戶端從Eclipse環(huán)境上遷移到Studio上變化比較大阱州,下面具體從以下幾方面總結(jié)下回家吃飯Android客戶端的變化:

1痛垛、使用動態(tài)代理AOP編程框架簡潔舅逸、高效開發(fā)

該動態(tài)代理框架的核心是通過dexmaker和Spring的攔截器實現(xiàn)AOP編程刽严;dexmaker是運行在Android DVM上蹬碧,利用Java編寫舱禽,來動態(tài)生成DEX字節(jié)碼的API。如果了解Spring AOP編程的話恩沽,應(yīng)該聽說過cglib or ASM誊稚,但這兩個工具生成都是Java字節(jié)碼,而DVM加載的必須是DEX字節(jié)碼罗心。所以里伯,想要在Android上進行AOP編程,Google 的dexmaker可以說是一個非常好的選擇渤闷。

輔助的還有注解和反射疾瓮,使用注解來標注同步、異步飒箭、加載框和加載顯示的文字狼电;反射回調(diào)繼承以下Base類子類的方法:

BaseAsyncActivity

BaseAsyncFragment

BaseAsyncListAdapter

BaseAsyncObject

同時著重使用系統(tǒng)的Handler并封裝為MessageProxy進行消息的分發(fā)與處理蜒灰。

封裝映射Map為ModelMap,方便回調(diào)時的數(shù)據(jù)傳遞肩碟。

因為公司項目是不外泄的强窖,具體可以參考:

個人作品《BingoWorld》

下載地址

開源地址

2、使用OkHttp網(wǎng)絡(luò)庫提升安全及穩(wěn)定性

客戶端加入動態(tài)代理AOP編程框架后削祈,又開始更換網(wǎng)絡(luò)庫翅溺,去掉xUtilsVolley,使用OkHttp岩瘦。著重封裝為四種請求加載方式:

OkHttpGet

OkHttpPost

OkHttpDownload

OkHttpUpload

OkHttp是Google推崇的未巫,使用它不會擔心適配的問題和穩(wěn)定性,實際上現(xiàn)在封裝的網(wǎng)絡(luò)庫確實穩(wěn)定启昧。

同時叙凡,通過Java的SSL對稱加密和OkHttp結(jié)合,保護我們的數(shù)據(jù)安全不被攔截惡意篡改密末。

3握爷、AS 下使用Gradle快速構(gòu)建

客戶端從Eclipse環(huán)境上遷移到Studio上最大的益處就是使用Gradle快速構(gòu)建,通過maven和apt可以快速添加严里、使用和刪除第三方庫新啼。

在Gradle下使用統(tǒng)一的簽名方式,獨立配置簽名信息刹碾,在工程中不管debug還是release版都使用正式簽名燥撞,包括地圖的、推送迷帜、支付物舒、分享和友盟統(tǒng)計等。

多渠道打包戏锹,定義不同的product flavor, 并把AndroiManifest中的channel渠道編號替換為對應(yīng)的flavor標識冠胯。

自定義Build Type,可以使用默認的兩種debug測試版和release正式版锦针,還可以加入Grey測試版荠察。

Gradle下,壓縮資源奈搜、zip優(yōu)化悉盆、混淆代碼等控制方便,可以使客戶端包更小馋吗,不容易反編譯焕盟。

shrinkResources:壓縮資源

zipAlignEnabled:zip優(yōu)化

minifyEnabled:混淆代碼

4、抽象耗美、封裝加重構(gòu)多管齊下

以上三點的改變還是基礎(chǔ)性的調(diào)整京髓,在穩(wěn)固的基礎(chǔ)上我們要提高的就是代碼清晰的層次和健壯性;回家吃飯客戶端對多個界面商架、邏輯和功能進行封裝后抽象出來堰怨,方便以后維護。

重構(gòu)的界面有:

CodeLoginActivity:驗證碼登錄

RiskControlActivity:風(fēng)控驗證

KitchenDetailActivity:廚房詳情

MenuDetailActivity:菜品詳情

SearchActivity:搜索頁面

TakeWordActivity:捎句話

CouponActivity:優(yōu)惠券

抽象涉及到的:

DetailLoveDoubleDishView:愛心雙拼菜品

DetailLittleTableView:小飯桌菜品

DetailMenuDishView:菜品詳情

DetailRecommendDishView:推薦菜

DetailCommonDishView:普通菜

DetailCommentView:評論

自定義View封裝涉及到的:

ChoiceView:菜品選擇View

ShareView:分享View

ShoppingView:購物車

TicketView:家廚飯票

UploadImageView:上傳圖片View

還有各種Manager管理類和Util工具類

KitchenCartManager :購物車管理類

LocationManager:定位管理類

ShareManager:分享管理類

NavigateManager:路由跳轉(zhuǎn)管理類

DateUtil:時間工具類

FastJsonUtil:數(shù)據(jù)解析工具類

KeyBoardUtil:軟鍵盤顯示與隱藏工具類

SpecialViewUtil:文字顏色多樣化顯示工具類

5蛇摸、使用別人的好“輪子”

現(xiàn)在的開發(fā)都在追求高效和快速备图,所以一個高效快速的開發(fā)離不開別人穩(wěn)定的第三方庫,我們也不可能從零開始赶袄,先看看我們的這些“輪子”:

Butterknife:黃油刀揽涮,編譯時期的依賴注入,省去大量的findViewById重復(fù)操作

Logger:log打印利器饿肺,打印清晰蒋困,可以打印出對應(yīng)的log行數(shù)

Esperandro:SharedPreferences key-value存取利器

OkHttp:Google推崇的網(wǎng)絡(luò)庫

Fastjson:阿里的數(shù)據(jù)解析庫,用于網(wǎng)絡(luò)請求后的數(shù)據(jù)解析

Universal Image Loader:使用最普遍的圖片加載庫

MultiDex:解決App中方法數(shù)超過65535個的分包庫

Shape Image View:穩(wěn)定不會引起內(nèi)存泄漏的原型圖片庫敬辣,主要用于頭像的顯示

6雪标、性能優(yōu)化

產(chǎn)品 = 功能 + 性能,回家吃飯客戶端已經(jīng)在下面幾個方面進行了性能優(yōu)化:

LeakCanary:內(nèi)存泄露目前在項目中一般用leakcanary基本就能搞定溉跃,配置起來也相當簡單

ViewStub:View的延遲加載

過度繪制:使用RelativeLayout減少視圖樹的層級村刨,防止過度繪制

onTrimMemory回調(diào):應(yīng)用響應(yīng)此回調(diào)釋放非必須內(nèi)存,如圖片的內(nèi)存占用

lint檢查:通過Android Studio中的 Analyze->Inspect Code 對工程代碼做靜態(tài)掃描撰茎;找出潛在的問題代碼并修改嵌牺,去掉無用的圖片

?代碼優(yōu)化:去掉大量的臨時變量和部分全局變量,優(yōu)化for循環(huán)龄糊,建議使用增強for循環(huán)逆粹,在適當?shù)纳芷谥袆?chuàng)建釋放對象

7、實踐新技術(shù)

上面大概的總結(jié)回家吃飯Android客戶端的變化绎签,但是還會繼續(xù)變化枯饿,接下來的任務(wù)有:

重構(gòu)還沒有完,會繼續(xù)重構(gòu)其他頁面诡必,應(yīng)用AOP編程框架

升級OkHttp2.6到OkHttp3.2奢方,異步數(shù)據(jù)解析更加方便

使用Glide圖片庫和Realm數(shù)據(jù)庫

注意lint檢查,每次發(fā)版前通過lint檢查找出潛在的問題代碼并修改

修改工程的命名爸舒,使整個工程更加規(guī)范化

繼續(xù)調(diào)研插件化和熱更新蟋字,同時使整個工程模塊化

嘗試使用新技術(shù)到生產(chǎn)環(huán)境中,如RxAndroid扭勉、Retrofit鹊奖、Drager2等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涂炎,隨后出現(xiàn)的幾起案子忠聚,更是在濱河造成了極大的恐慌设哗,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件两蟀,死亡現(xiàn)場離奇詭異网梢,居然都是意外死亡,警方通過查閱死者的電腦和手機赂毯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門战虏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人党涕,你說我怎么就攤上這事烦感。” “怎么了膛堤?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵手趣,是天一觀的道長。 經(jīng)常有香客問我骑祟,道長回懦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任次企,我火速辦了婚禮怯晕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缸棵。我一直安慰自己舟茶,他們只是感情好,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布堵第。 她就那樣靜靜地躺著吧凉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪踏志。 梳的紋絲不亂的頭發(fā)上阀捅,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音针余,去河邊找鬼饲鄙。 笑死,一個胖子當著我的面吹牛圆雁,可吹牛的內(nèi)容都是我干的忍级。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼伪朽,長吁一口氣:“原來是場噩夢啊……” “哼轴咱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤朴肺,失蹤者是張志新(化名)和其女友劉穎窖剑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戈稿,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡苛吱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了器瘪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绘雁,死狀恐怖橡疼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庐舟,我是刑警寧澤欣除,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站挪略,受9級特大地震影響历帚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杠娱,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一挽牢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摊求,春花似錦禽拔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茧痕,卻和暖如春野来,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背踪旷。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工曼氛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人埃脏。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓搪锣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親彩掐。 傳聞我的和親對象是個殘疾皇子构舟,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,090評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器狗超,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 本周跑步:3+6+5=14公里弹澎,未達20公里的目標,還差6公里努咐。跑前跑后的拉伸完成苦蒿。 本周瑜伽練習(xí):3次,基本達到...
    EllyElly閱讀 175評論 0 0
  • 27天夫妻關(guān)系成長作業(yè): 第三天(7月28日)---愛因有愛 今天渗稍,我在夫妻成長群里跟著秀蘭師兄佩迟,非常認...
    感恩有你李瑞閱讀 601評論 0 0