Android 开发有什么好的架构么?
生活随笔
收集整理的這篇文章主要介紹了
Android 开发有什么好的架构么?
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
做了幾年Android開發(fā),也算是個(gè)半吊子的開發(fā)者了。但是從大公司到小公司,要么程序的結(jié)構(gòu)亂七八糟,別說耦合什么的了,根本找不到功能的代碼;要么就是有個(gè)看似牛逼的架構(gòu)師(往往是j2me或者j2ee轉(zhuǎn)過來的),然后搞一套套的設(shè)計(jì)方法,設(shè)計(jì)模式,代碼到是比較能看懂,但是冗余多的令人發(fā)指,動(dòng)不動(dòng)就是interface factory abs類一坨坨,最后就做了別人十幾行代碼的事兒。
各位有推薦什么好的Android開發(fā)框架或者好的開源項(xiàng)目也行,不勝感激。修改 舉報(bào) 添加評(píng)論? 分享 ???邀請(qǐng)回答 按投票排序按時(shí)間排序
android10/Android-CleanArchitecture · GitHub
說說用下來的優(yōu)缺點(diǎn),如有紕漏,還請(qǐng)指正。
無論從架構(gòu)還是代碼上看,分層都是三層:視圖層(Presentation Layer)、控制層(Domain Layer)、數(shù)據(jù)流層(Data Layer)。
層級(jí)之間通過添加接口層作為分隔實(shí)現(xiàn)解耦。
簡單來說,優(yōu)點(diǎn)有以下
1.層次分明,各層級(jí)之間都不管對(duì)方如何實(shí)現(xiàn),只關(guān)注結(jié)果;
2.在視圖層(Presentation Layer)使用MVP架構(gòu),使原本臃腫的Activity(或Fragment)變得簡單,其處理方法都交給了Presenter。
3.易于做測(cè)試,只要基于每個(gè)模塊單獨(dú)做好單元測(cè)試就能確保整體的穩(wěn)定性。
4.易于快速迭代,基于代碼的低耦合,只需在業(yè)務(wù)邏輯上增加接口,然后在相應(yīng)的層級(jí)分別實(shí)現(xiàn)即可,絲毫不影響其他功能。
....等等
目前發(fā)現(xiàn)的缺點(diǎn):
1.由于視圖層(Presentation Layer)使用MVP模式,每個(gè)有獨(dú)立邏輯的Activity(Fragment)都擁有獨(dú)立的Presenter,當(dāng)View多起來時(shí)候Presenter維護(hù)起來就顯得略麻煩
2.上手難度比較大,學(xué)習(xí)曲線比較陡峭
推薦閱讀?
http://fernandocejas.com/
https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html 編輯于 2015-09-16?8 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同19 反對(duì),不會(huì)顯示你的姓名 陳昱全,程序員 Jackson、孟田田、魏竇哲?等人贊同 你說這個(gè)我想了上次還被老大批了--過度設(shè)計(jì)了。過多考慮未來的需求和變動(dòng)了就設(shè)計(jì)過度了,于是出現(xiàn)了就真是幾十行的代碼,寫出各種類各種接口。
最近學(xué)到的倒是基于android特性進(jìn)行開發(fā),ui上可以從需求分析到android控件的選擇比如fragment,slidingmenu,actionbar,navigation drawer等。
整體架構(gòu)上,數(shù)據(jù)庫層和ui刷新,數(shù)據(jù)異步讀取,使用contentprovider(數(shù)據(jù)庫操作像rest api一樣的風(fēng)格),cursorloader,網(wǎng)絡(luò)請(qǐng)求的intentservice,resultreceiver,gson等。
設(shè)計(jì)思路上,分層--還是走的mvc嘛,雖然最近也有用mvp,不過不管怎么樣關(guān)鍵還是要有分層的意識(shí)吧;解耦--面向接口編程啊,依賴倒置都是;抽象能力:其實(shí)我覺得抽象能力很重要的,不過自己現(xiàn)在抽象能力也很弱,沒啥建議。
好的開源項(xiàng)目:我覺得倒是沒什么統(tǒng)一框架,可以看看foursquare,google io app的源碼都是相當(dāng)好的,android源碼永遠(yuǎn)是值得讀的。
文中很多知識(shí)學(xué)自這逼@李彬,建議關(guān)注,不過這逼很裝逼。 編輯于 2013-09-18?9 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同15 反對(duì),不會(huì)顯示你的姓名 Rocko,http://rocko.xyz Jackson、呵呵后、david-wei?等人贊同 推薦幾篇文章:
App工程結(jié)構(gòu)搭建:幾種常見Android代碼架構(gòu)分析
Architecting Android…The clean way?
A useful stack on android #1, architecture · Saúl M.
......
自己寫了篇博客:?MVVM_Android-CleanArchitecture 編輯于 2015-11-07?1 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同7 反對(duì),不會(huì)顯示你的姓名 亖葉酢漿草,簡單易懂的現(xiàn)代魔法 Jackson、溫葉、張洋?等人贊同 Android開發(fā),或者說移動(dòng)終端開發(fā)的入門易就不可避免的精通難。低門檻和低要求導(dǎo)致了J2EE程序猿可能要5年才開始考慮的東西移動(dòng)開發(fā)者甚至1年后就開始感到迷茫,例如架構(gòu)。不才的本人與題主相仿,也是在畢業(yè)寫Android幾年后開始從如何實(shí)現(xiàn)轉(zhuǎn)而思考怎么更好的實(shí)現(xiàn)。如何抽象,如何接口,如何實(shí)現(xiàn)可擴(kuò)展。當(dāng)時(shí)去github瘋狂的尋找開源工程讀源碼,但大多找到的也只是“寫的很漂亮的代碼”而已。移動(dòng)終端單打獨(dú)斗的特點(diǎn)也許也注定了代碼比起架構(gòu)更注重完整性和功能性。
所以現(xiàn)在對(duì)這點(diǎn)看的挺淡的,盡量將代碼寫的漂亮些,但不過多苛求。也許敏捷的大流行也從一個(gè)側(cè)面證明了移動(dòng)開發(fā)不要過多的關(guān)注架構(gòu)? 發(fā)布于 2013-07-31?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同9 反對(duì),不會(huì)顯示你的姓名 Golion,會(huì)寫代碼 會(huì)畫畫 ACG宅 孫海華、Jackson、溫葉?等人贊同 Android本身就是一個(gè)MVC框架,Java也是一個(gè)重量級(jí)的語言。
我覺得,不需要再加新的框架了,增加團(tuán)隊(duì)學(xué)習(xí)成本了。
你的精力應(yīng)該花在拆解業(yè)務(wù),分成若干個(gè)library,如何集成如何分工上面。 發(fā)布于 2015-01-01?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同4 反對(duì),不會(huì)顯示你的姓名 程睿,Programming nerd 彭芊、許文杰、點(diǎn)墨?等人贊同 Android基本就是一個(gè)MVC框架了,你不需要再特別找其他所謂框架進(jìn)行包裝。我建議從component-oriented design入手,善用繼承來寫出customized widgets。說實(shí)話,你只要按照Android Online Documentation操作即可。。。 發(fā)布于 2014-07-17?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同11 反對(duì),不會(huì)顯示你的姓名 Keegan小鋼,移動(dòng)開發(fā)者,個(gè)人博客:… 王百思、彭芊、程路?等人贊同 網(wǎng)上真的很少有人出來講Android的架構(gòu)或重構(gòu),所以我打算將自己的經(jīng)驗(yàn)總結(jié)分享出來。有興趣的也可看看,一起討論:
寫安卓代碼就是在搭積木,一個(gè)工程關(guān)聯(lián)七八個(gè)library工程是很常見的,難點(diǎn)在如何抽象這些可重用的工程,這也是架構(gòu)層面需要關(guān)注的地方。
安卓開發(fā)需要研究的東西實(shí)在太多,架構(gòu)層面?zhèn)€人感覺倒不是安卓上最應(yīng)該花特別多時(shí)間去學(xué)習(xí)的方向。有時(shí)候架構(gòu)設(shè)計(jì)能力的提升反倒是學(xué)習(xí)了另外一門語言瞬間的領(lǐng)悟~ 發(fā)布于 2014-07-17?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同6 反對(duì),不會(huì)顯示你的姓名 Lippi OuYang,樂于造輪子 Jackson、木頭人、溫葉?等人贊同 Android學(xué)習(xí)之路Android學(xué)習(xí)之路
別人整理的幾個(gè)android開源框架值得推薦的android開源框架
別人整理的一些Android項(xiàng)目Trinea/android-open-project · GitHub 編輯于 2015-03-29?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同3 反對(duì),不會(huì)顯示你的姓名 歐陽繼超,http://blog.oyanglul.us Jackson、溫葉、匿名用戶?贊同 androidbootstrap 發(fā)布于 2013-09-30?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同6 反對(duì),不會(huì)顯示你的姓名 陳陽,Andrpid開發(fā)工程師。No coding no life 王百思、Jackson、風(fēng)清云淡?等人贊同 我設(shè)計(jì)實(shí)現(xiàn)了我們公司app的基礎(chǔ)架構(gòu),目前實(shí)現(xiàn)了
1 業(yè)務(wù)邏輯和ui邏輯徹底隔離
2 api和activity跳轉(zhuǎn)均實(shí)現(xiàn)配置化管理
3 logcat的配置管理
4 業(yè)務(wù)邏輯同時(shí)支持同步和異步調(diào)用,使得可以方便進(jìn)行業(yè)務(wù)邏輯本身的拓展和ui調(diào)用之間的拓展
5 實(shí)現(xiàn)了一套依賴注入框架
6 實(shí)現(xiàn)了一套eventbus
7 自定義asyncTask
最近在逐漸開源。文檔和單元測(cè)試在慢慢完善。話說單元測(cè)試正是個(gè)好東西。 編輯于 2015-09-01?11 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同2 反對(duì),不會(huì)顯示你的姓名 徐鑫炎,Android開發(fā)者 kaffa、匿名用戶?贊同 ThinkAndroid首頁、文檔和下載
開發(fā)中,我保持的原則是
盡可能簡潔。
重重構(gòu)而輕設(shè)計(jì)。
將類用作重構(gòu)的手段而不是設(shè)計(jì)手段。
代碼發(fā)展的走向是接口和模塊設(shè)計(jì)良好,而不是無盡的繼承。
有意識(shí)地讓代碼走向混亂,然后重構(gòu)。
無可奈何才使用設(shè)計(jì)模式。 發(fā)布于 2014-04-17?3 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同4 反對(duì),不會(huì)顯示你的姓名 吳凱航,密集恐懼癥/尖銳恐懼癥/強(qiáng)迫癥/不發(fā)呆會(huì)… 九天翼垂云、zh1992、vince wong?等人贊同 按我的感受來說,android開發(fā)架構(gòu)目前追求的主要還是功能性,更多的是以一種"快速開發(fā)模板"的意義存在的.對(duì)設(shè)計(jì)模式,接口規(guī)范,等等東西看的沒那么重.
我覺得這個(gè)和移動(dòng)終端開發(fā)的特性有關(guān)系.
一,移動(dòng)終端的性能目前來說依然遠(yuǎn)遠(yuǎn)不及桌面終端,而且是不可擴(kuò)展的(當(dāng)然,除非你換手機(jī)).而在成熟的EE框架中,大量的抽象,代理,托管,緩存等核心元素,都不可避免地占用資源.服務(wù)器可以通過升級(jí)配置,分布式來解決,但對(duì)于性能相對(duì)低下且不可擴(kuò)展的移動(dòng)終端來說,這些東西有時(shí)候就太奢侈了.
二,移動(dòng)互聯(lián)網(wǎng)項(xiàng)目,目前來說遠(yuǎn)比傳統(tǒng)項(xiàng)目需要更為靈活快速的開發(fā)方式.現(xiàn)在很多項(xiàng)目都是搶時(shí)間,這周定一個(gè)需求下周就得上,這種時(shí)候?qū)τ陂_發(fā)人員來說,更愿意接受一個(gè)有基礎(chǔ)功能的開發(fā)模板,通過快速的開發(fā)來達(dá)到需要的功能.這種時(shí)候,開發(fā)人員很傾向于把常用的,相對(duì)固定的業(yè)務(wù)邏輯固化入這個(gè)模板以節(jié)省時(shí)間.所以在我看到的一些所謂框架中,個(gè)人風(fēng)格都比較濃.很可能一家公司視若珍寶完善了很久的框架,在另外一家公司就一文不值--因?yàn)榛A(chǔ)的業(yè)務(wù)邏輯考慮的根本就不一樣. 發(fā)布于 2013-08-09?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同2 反對(duì),不會(huì)顯示你的姓名 張三 truistic、AndroidLin?贊同 圖片加載框架:fresco?Universal-Image-Loader?GLIDE PICASSO
網(wǎng)絡(luò)連接框架:volley?okhttpandroid-async-http
緩存框架:greenDAO 編輯于 2015-10-28?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同1 反對(duì),不會(huì)顯示你的姓名 阮鵬飛 王湘云?贊同 androidannotations 極力推薦一塊高效運(yùn)行的控件注入框架 發(fā)布于 2015-07-14?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 王冕,只會(huì)C 私以為,在能夠保證工程師素養(yǎng)的前提下,敏捷開發(fā),快速迭代才是最有效的開發(fā)模式。 編輯于 2014-09-19?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 匿名用戶 覺著只要掌握了Android本身的東西,框架就無所謂了,如果想偷懶的話,學(xué)一個(gè)也是不錯(cuò) 發(fā)布于 2015-02-17?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 妄想癥的貓,yi.desk shinado/netframe · GitHub
試試這個(gè)吧 發(fā)布于 2015-03-20?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 王生輝 大家發(fā)的開運(yùn)項(xiàng)目 都不錯(cuò)的樣子啊。 發(fā)布于 2015-06-04?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 小馬甲,android手機(jī)軟件開發(fā)人員 mark一下. 發(fā)布于 2015-08-27?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 doxvxob,說出來被嘲笑的夢(mèng)想才有實(shí)現(xiàn)的價(jià)值 馬一個(gè) 發(fā)布于 2015-10-19?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 匿名用戶 mark一下. 發(fā)布于 2015-10-30?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同1 反對(duì),不會(huì)顯示你的姓名 匿名用戶 曾藝樂?贊同 高煥堂老師的EIT架構(gòu),可以去看看Android橫掃千軍系列中的架構(gòu)知識(shí)。 發(fā)布于 2013-09-30?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 洪俊敏,stay out of your comfort zone android本身即是MVC了,所以我覺得可以發(fā)揮的地方是這三個(gè)模塊的解耦和模塊內(nèi)的設(shè)計(jì),比如怎么設(shè)計(jì)自定義的組件(builder模式等),組件能否與業(yè)務(wù)和呈現(xiàn)分離;能否用基類等方式設(shè)計(jì)抽象出比如activity生命周期回調(diào),異步線程調(diào)用的共同的流程;用style和include等方法盡量讓布局文件易于維護(hù)和復(fù)用。閉包等概念都能讓你設(shè)計(jì)出更好的模型。這些東西在Android 源碼和類似 efficient java中都能學(xué)到。我目前在做公司三個(gè)APP的合并,抽象出可以復(fù)用的業(yè)務(wù)邏輯和工具性的代碼作為lib,也就是android studio里的module, 也是覺得要耗費(fèi)一番精力。
各位有推薦什么好的Android開發(fā)框架或者好的開源項(xiàng)目也行,不勝感激。修改 舉報(bào) 添加評(píng)論? 分享 ???邀請(qǐng)回答 按投票排序按時(shí)間排序
28 個(gè)回答
贊同18 反對(duì),不會(huì)顯示你的姓名 豆沙包,愛健身的Androider 多多洛、背你進(jìn)京趕考、張東?等人贊同 這個(gè)是我們團(tuán)隊(duì)一直推崇而且現(xiàn)在正在使用的架構(gòu)android10/Android-CleanArchitecture · GitHub
說說用下來的優(yōu)缺點(diǎn),如有紕漏,還請(qǐng)指正。
無論從架構(gòu)還是代碼上看,分層都是三層:視圖層(Presentation Layer)、控制層(Domain Layer)、數(shù)據(jù)流層(Data Layer)。
層級(jí)之間通過添加接口層作為分隔實(shí)現(xiàn)解耦。
簡單來說,優(yōu)點(diǎn)有以下
1.層次分明,各層級(jí)之間都不管對(duì)方如何實(shí)現(xiàn),只關(guān)注結(jié)果;
2.在視圖層(Presentation Layer)使用MVP架構(gòu),使原本臃腫的Activity(或Fragment)變得簡單,其處理方法都交給了Presenter。
3.易于做測(cè)試,只要基于每個(gè)模塊單獨(dú)做好單元測(cè)試就能確保整體的穩(wěn)定性。
4.易于快速迭代,基于代碼的低耦合,只需在業(yè)務(wù)邏輯上增加接口,然后在相應(yīng)的層級(jí)分別實(shí)現(xiàn)即可,絲毫不影響其他功能。
....等等
目前發(fā)現(xiàn)的缺點(diǎn):
1.由于視圖層(Presentation Layer)使用MVP模式,每個(gè)有獨(dú)立邏輯的Activity(Fragment)都擁有獨(dú)立的Presenter,當(dāng)View多起來時(shí)候Presenter維護(hù)起來就顯得略麻煩
2.上手難度比較大,學(xué)習(xí)曲線比較陡峭
推薦閱讀?
http://fernandocejas.com/
https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html 編輯于 2015-09-16?8 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同19 反對(duì),不會(huì)顯示你的姓名 陳昱全,程序員 Jackson、孟田田、魏竇哲?等人贊同 你說這個(gè)我想了上次還被老大批了--過度設(shè)計(jì)了。過多考慮未來的需求和變動(dòng)了就設(shè)計(jì)過度了,于是出現(xiàn)了就真是幾十行的代碼,寫出各種類各種接口。
最近學(xué)到的倒是基于android特性進(jìn)行開發(fā),ui上可以從需求分析到android控件的選擇比如fragment,slidingmenu,actionbar,navigation drawer等。
整體架構(gòu)上,數(shù)據(jù)庫層和ui刷新,數(shù)據(jù)異步讀取,使用contentprovider(數(shù)據(jù)庫操作像rest api一樣的風(fēng)格),cursorloader,網(wǎng)絡(luò)請(qǐng)求的intentservice,resultreceiver,gson等。
設(shè)計(jì)思路上,分層--還是走的mvc嘛,雖然最近也有用mvp,不過不管怎么樣關(guān)鍵還是要有分層的意識(shí)吧;解耦--面向接口編程啊,依賴倒置都是;抽象能力:其實(shí)我覺得抽象能力很重要的,不過自己現(xiàn)在抽象能力也很弱,沒啥建議。
好的開源項(xiàng)目:我覺得倒是沒什么統(tǒng)一框架,可以看看foursquare,google io app的源碼都是相當(dāng)好的,android源碼永遠(yuǎn)是值得讀的。
文中很多知識(shí)學(xué)自這逼@李彬,建議關(guān)注,不過這逼很裝逼。 編輯于 2013-09-18?9 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同15 反對(duì),不會(huì)顯示你的姓名 Rocko,http://rocko.xyz Jackson、呵呵后、david-wei?等人贊同 推薦幾篇文章:
App工程結(jié)構(gòu)搭建:幾種常見Android代碼架構(gòu)分析
Architecting Android…The clean way?
A useful stack on android #1, architecture · Saúl M.
......
自己寫了篇博客:?MVVM_Android-CleanArchitecture 編輯于 2015-11-07?1 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同7 反對(duì),不會(huì)顯示你的姓名 亖葉酢漿草,簡單易懂的現(xiàn)代魔法 Jackson、溫葉、張洋?等人贊同 Android開發(fā),或者說移動(dòng)終端開發(fā)的入門易就不可避免的精通難。低門檻和低要求導(dǎo)致了J2EE程序猿可能要5年才開始考慮的東西移動(dòng)開發(fā)者甚至1年后就開始感到迷茫,例如架構(gòu)。不才的本人與題主相仿,也是在畢業(yè)寫Android幾年后開始從如何實(shí)現(xiàn)轉(zhuǎn)而思考怎么更好的實(shí)現(xiàn)。如何抽象,如何接口,如何實(shí)現(xiàn)可擴(kuò)展。當(dāng)時(shí)去github瘋狂的尋找開源工程讀源碼,但大多找到的也只是“寫的很漂亮的代碼”而已。移動(dòng)終端單打獨(dú)斗的特點(diǎn)也許也注定了代碼比起架構(gòu)更注重完整性和功能性。
所以現(xiàn)在對(duì)這點(diǎn)看的挺淡的,盡量將代碼寫的漂亮些,但不過多苛求。也許敏捷的大流行也從一個(gè)側(cè)面證明了移動(dòng)開發(fā)不要過多的關(guān)注架構(gòu)? 發(fā)布于 2013-07-31?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同9 反對(duì),不會(huì)顯示你的姓名 Golion,會(huì)寫代碼 會(huì)畫畫 ACG宅 孫海華、Jackson、溫葉?等人贊同 Android本身就是一個(gè)MVC框架,Java也是一個(gè)重量級(jí)的語言。
我覺得,不需要再加新的框架了,增加團(tuán)隊(duì)學(xué)習(xí)成本了。
你的精力應(yīng)該花在拆解業(yè)務(wù),分成若干個(gè)library,如何集成如何分工上面。 發(fā)布于 2015-01-01?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同4 反對(duì),不會(huì)顯示你的姓名 程睿,Programming nerd 彭芊、許文杰、點(diǎn)墨?等人贊同 Android基本就是一個(gè)MVC框架了,你不需要再特別找其他所謂框架進(jìn)行包裝。我建議從component-oriented design入手,善用繼承來寫出customized widgets。說實(shí)話,你只要按照Android Online Documentation操作即可。。。 發(fā)布于 2014-07-17?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同11 反對(duì),不會(huì)顯示你的姓名 Keegan小鋼,移動(dòng)開發(fā)者,個(gè)人博客:… 王百思、彭芊、程路?等人贊同 網(wǎng)上真的很少有人出來講Android的架構(gòu)或重構(gòu),所以我打算將自己的經(jīng)驗(yàn)總結(jié)分享出來。有興趣的也可看看,一起討論:
Android項(xiàng)目重構(gòu)之路:架構(gòu)篇
Android項(xiàng)目重構(gòu)之路:界面篇
Android項(xiàng)目重構(gòu)之路:實(shí)現(xiàn)篇
編輯于 2015-10-24?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同3 反對(duì),不會(huì)顯示你的姓名 world hello Jackson、王三、張濤?贊同 KJFrameForAndroid框架,是一個(gè)android開發(fā)框架,非常好用,直接一行代碼搞定一切,文檔和demo也很齊全。最大的優(yōu)勢(shì)是這個(gè)框架是一直在維護(hù)的,不像其他的一些爛玩意,用上幾天,一堆問題還沒人維護(hù)。https://github.com/kymjs/KJFrameForAndroid 發(fā)布于 2014-08-15?3 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同1 反對(duì),不會(huì)顯示你的姓名 0xc0de4f,程序猿/自由職業(yè)者/ruby愛好者 Jackson?贊同 把代碼耦合降低,能抽象的抽象,提高代碼的復(fù)用能力。MVC模塊各司其職,不要參雜無關(guān)的東西。其實(shí)最主要的就是對(duì)業(yè)務(wù)的熟悉吧,把要實(shí)現(xiàn)的功能進(jìn)行合理劃分抽象基本就可以寫出不錯(cuò)的代碼了 發(fā)布于 2014-07-18?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同1 反對(duì),不會(huì)顯示你的姓名 Kaede,暇な時(shí)、君を想うと、戀いしくて、すれば… Jackson?贊同 除了使用MVP模式,其他的都不要。 發(fā)布于 2015-09-03?3 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同9 反對(duì),不會(huì)顯示你的姓名 于敬業(yè),最美鎖屏,最美壁紙,最美應(yīng)用,最美的你 孫海華、Jackson、大灰狼?等人贊同 安卓開發(fā)也多年,從傳統(tǒng)J2EE開發(fā)轉(zhuǎn)過來,深知過度設(shè)計(jì)的危害。這些年一直追求把代碼在最小架構(gòu)下寫的通俗易懂。只是說起來容易做起來難。其實(shí)做架構(gòu)是什么?是把復(fù)雜系統(tǒng)高內(nèi)聚低耦合的能力,往往是應(yīng)付幾十個(gè)人同時(shí)協(xié)同作戰(zhàn)時(shí)能夠有序穩(wěn)定,相對(duì)有節(jié)奏。但話說回來,對(duì)于app層面的開發(fā),2到3個(gè)能力差不多的人就能形成一個(gè)高效的整體,一款產(chǎn)品這個(gè)開發(fā)規(guī)模能應(yīng)付大部分情況,過度復(fù)雜的架構(gòu)設(shè)計(jì)越來越?jīng)]法適應(yīng)快速的移動(dòng)產(chǎn)品演進(jìn),所以,盡量在基本mvc分層基礎(chǔ)上把代碼寫的通俗易懂,適度重構(gòu)。寫安卓代碼就是在搭積木,一個(gè)工程關(guān)聯(lián)七八個(gè)library工程是很常見的,難點(diǎn)在如何抽象這些可重用的工程,這也是架構(gòu)層面需要關(guān)注的地方。
安卓開發(fā)需要研究的東西實(shí)在太多,架構(gòu)層面?zhèn)€人感覺倒不是安卓上最應(yīng)該花特別多時(shí)間去學(xué)習(xí)的方向。有時(shí)候架構(gòu)設(shè)計(jì)能力的提升反倒是學(xué)習(xí)了另外一門語言瞬間的領(lǐng)悟~ 發(fā)布于 2014-07-17?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同6 反對(duì),不會(huì)顯示你的姓名 Lippi OuYang,樂于造輪子 Jackson、木頭人、溫葉?等人贊同 Android學(xué)習(xí)之路Android學(xué)習(xí)之路
別人整理的幾個(gè)android開源框架值得推薦的android開源框架
別人整理的一些Android項(xiàng)目Trinea/android-open-project · GitHub 編輯于 2015-03-29?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同3 反對(duì),不會(huì)顯示你的姓名 歐陽繼超,http://blog.oyanglul.us Jackson、溫葉、匿名用戶?贊同 androidbootstrap 發(fā)布于 2013-09-30?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同6 反對(duì),不會(huì)顯示你的姓名 陳陽,Andrpid開發(fā)工程師。No coding no life 王百思、Jackson、風(fēng)清云淡?等人贊同 我設(shè)計(jì)實(shí)現(xiàn)了我們公司app的基礎(chǔ)架構(gòu),目前實(shí)現(xiàn)了
1 業(yè)務(wù)邏輯和ui邏輯徹底隔離
2 api和activity跳轉(zhuǎn)均實(shí)現(xiàn)配置化管理
3 logcat的配置管理
4 業(yè)務(wù)邏輯同時(shí)支持同步和異步調(diào)用,使得可以方便進(jìn)行業(yè)務(wù)邏輯本身的拓展和ui調(diào)用之間的拓展
5 實(shí)現(xiàn)了一套依賴注入框架
6 實(shí)現(xiàn)了一套eventbus
7 自定義asyncTask
最近在逐漸開源。文檔和單元測(cè)試在慢慢完善。話說單元測(cè)試正是個(gè)好東西。 編輯于 2015-09-01?11 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同2 反對(duì),不會(huì)顯示你的姓名 徐鑫炎,Android開發(fā)者 kaffa、匿名用戶?贊同 ThinkAndroid首頁、文檔和下載
ThinkAndroid是一個(gè)免費(fèi)的開源的、簡易的、遵循Apache2開源協(xié)議發(fā)布的Android開發(fā)框架,其開發(fā)宗旨是簡單、快速的進(jìn)行Android應(yīng)用程序的開發(fā),包含Android mvc、簡易sqlite orm、ioc模塊、封裝Android httpclitent的http模塊,具有快速構(gòu)建文件緩存功能,無需考慮緩存文件的格式,都可以非常輕松的實(shí)現(xiàn)緩存,它還基于文件緩存模塊實(shí)現(xiàn)了圖片緩存功能,在android中加載的圖片的時(shí)候,對(duì)oom的問題,和對(duì)加載圖片錯(cuò)位的問題都輕易解決。他還包括了一個(gè)手機(jī)開發(fā)中經(jīng)常應(yīng)用的實(shí)用工具類,如日志管理,配置文件管理,android下載器模塊,網(wǎng)絡(luò)切換檢測(cè)等等工具。
目前Think
發(fā)布于 2014-07-13?1 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同3 反對(duì),不會(huì)顯示你的姓名 匿名用戶 許文杰、點(diǎn)墨、沈利峰?贊同 Java語言本身就有過度設(shè)計(jì)的嫌疑。這是我個(gè)人的看法。開發(fā)中,我保持的原則是
盡可能簡潔。
重重構(gòu)而輕設(shè)計(jì)。
將類用作重構(gòu)的手段而不是設(shè)計(jì)手段。
代碼發(fā)展的走向是接口和模塊設(shè)計(jì)良好,而不是無盡的繼承。
有意識(shí)地讓代碼走向混亂,然后重構(gòu)。
無可奈何才使用設(shè)計(jì)模式。 發(fā)布于 2014-04-17?3 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同4 反對(duì),不會(huì)顯示你的姓名 吳凱航,密集恐懼癥/尖銳恐懼癥/強(qiáng)迫癥/不發(fā)呆會(huì)… 九天翼垂云、zh1992、vince wong?等人贊同 按我的感受來說,android開發(fā)架構(gòu)目前追求的主要還是功能性,更多的是以一種"快速開發(fā)模板"的意義存在的.對(duì)設(shè)計(jì)模式,接口規(guī)范,等等東西看的沒那么重.
我覺得這個(gè)和移動(dòng)終端開發(fā)的特性有關(guān)系.
一,移動(dòng)終端的性能目前來說依然遠(yuǎn)遠(yuǎn)不及桌面終端,而且是不可擴(kuò)展的(當(dāng)然,除非你換手機(jī)).而在成熟的EE框架中,大量的抽象,代理,托管,緩存等核心元素,都不可避免地占用資源.服務(wù)器可以通過升級(jí)配置,分布式來解決,但對(duì)于性能相對(duì)低下且不可擴(kuò)展的移動(dòng)終端來說,這些東西有時(shí)候就太奢侈了.
二,移動(dòng)互聯(lián)網(wǎng)項(xiàng)目,目前來說遠(yuǎn)比傳統(tǒng)項(xiàng)目需要更為靈活快速的開發(fā)方式.現(xiàn)在很多項(xiàng)目都是搶時(shí)間,這周定一個(gè)需求下周就得上,這種時(shí)候?qū)τ陂_發(fā)人員來說,更愿意接受一個(gè)有基礎(chǔ)功能的開發(fā)模板,通過快速的開發(fā)來達(dá)到需要的功能.這種時(shí)候,開發(fā)人員很傾向于把常用的,相對(duì)固定的業(yè)務(wù)邏輯固化入這個(gè)模板以節(jié)省時(shí)間.所以在我看到的一些所謂框架中,個(gè)人風(fēng)格都比較濃.很可能一家公司視若珍寶完善了很久的框架,在另外一家公司就一文不值--因?yàn)榛A(chǔ)的業(yè)務(wù)邏輯考慮的根本就不一樣. 發(fā)布于 2013-08-09?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同2 反對(duì),不會(huì)顯示你的姓名 張三 truistic、AndroidLin?贊同 圖片加載框架:fresco?Universal-Image-Loader?GLIDE PICASSO
網(wǎng)絡(luò)連接框架:volley?okhttpandroid-async-http
緩存框架:greenDAO 編輯于 2015-10-28?2 條評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同1 反對(duì),不會(huì)顯示你的姓名 阮鵬飛 王湘云?贊同 androidannotations 極力推薦一塊高效運(yùn)行的控件注入框架 發(fā)布于 2015-07-14?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 王冕,只會(huì)C 私以為,在能夠保證工程師素養(yǎng)的前提下,敏捷開發(fā),快速迭代才是最有效的開發(fā)模式。 編輯于 2014-09-19?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 匿名用戶 覺著只要掌握了Android本身的東西,框架就無所謂了,如果想偷懶的話,學(xué)一個(gè)也是不錯(cuò) 發(fā)布于 2015-02-17?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 妄想癥的貓,yi.desk shinado/netframe · GitHub
試試這個(gè)吧 發(fā)布于 2015-03-20?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 王生輝 大家發(fā)的開運(yùn)項(xiàng)目 都不錯(cuò)的樣子啊。 發(fā)布于 2015-06-04?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 小馬甲,android手機(jī)軟件開發(fā)人員 mark一下. 發(fā)布于 2015-08-27?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 doxvxob,說出來被嘲笑的夢(mèng)想才有實(shí)現(xiàn)的價(jià)值 馬一個(gè) 發(fā)布于 2015-10-19?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 匿名用戶 mark一下. 發(fā)布于 2015-10-30?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同1 反對(duì),不會(huì)顯示你的姓名 匿名用戶 曾藝樂?贊同 高煥堂老師的EIT架構(gòu),可以去看看Android橫掃千軍系列中的架構(gòu)知識(shí)。 發(fā)布于 2013-09-30?添加評(píng)論?感謝? 分享 ?收藏???沒有幫助??? 舉報(bào) ???作者保留權(quán)利 贊同0 反對(duì),不會(huì)顯示你的姓名 洪俊敏,stay out of your comfort zone android本身即是MVC了,所以我覺得可以發(fā)揮的地方是這三個(gè)模塊的解耦和模塊內(nèi)的設(shè)計(jì),比如怎么設(shè)計(jì)自定義的組件(builder模式等),組件能否與業(yè)務(wù)和呈現(xiàn)分離;能否用基類等方式設(shè)計(jì)抽象出比如activity生命周期回調(diào),異步線程調(diào)用的共同的流程;用style和include等方法盡量讓布局文件易于維護(hù)和復(fù)用。閉包等概念都能讓你設(shè)計(jì)出更好的模型。這些東西在Android 源碼和類似 efficient java中都能學(xué)到。我目前在做公司三個(gè)APP的合并,抽象出可以復(fù)用的業(yè)務(wù)邏輯和工具性的代碼作為lib,也就是android studio里的module, 也是覺得要耗費(fèi)一番精力。
總結(jié)
以上是生活随笔為你收集整理的Android 开发有什么好的架构么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起学mini2440裸机开发(十)--
- 下一篇: Android SlidingMenu