精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

App工程結構搭建:幾種常見Android代碼架構分析

移動開發 Android
本文算是一篇漫談,談一談關于android開發中工程初始化的時候如何在初期我們就能搭建一個好的架構。本文先分析幾個當今比較流行的android軟件包,最后我們汲取其中覺得優秀的部分,搭建我們自己的通用android工程模板。

關于Android架構,因為手機的限制,目前我覺得也確實沒什么大談特談的,但是從開發的角度,看到整齊的代碼,優美的分層總是一種舒服的享受的。

從藝術的角度看,其實我們是在追求一種美。

本文先分析幾個當今比較流行的android軟件包,最后我們汲取其中覺得優秀的部分,搭建我們自己的通用android工程模板。

1. 微盤

微盤的架構比較簡單,我把最基本,最主干的畫了出來:

2011062522381915.png

第一層:com.sina.VDisk:com.sina(公司域名)+app(應用程序名稱) 。

第二層:各模塊名稱(主模塊VDiskClient和實體模塊entities)

第三層:各模塊下具體子包,實現類。

從圖中我們能得出上述分析中一個最簡單最經典的結構,一般在應用程序包下放一些全局的包或者類,如果有多個大的模塊,可以分成多個包,其中包括一個主模塊。

在主模塊中定義基類,比如BaseActivity等,如果主模塊下還有子模塊,可以在主模塊下建立子模塊相應的包。說明一點,有的時候如果只有一個主模塊,我們完全可以省略掉模塊這一層,就是BaseActivity.java及其子模塊直接提至第二層。

在實體模塊中,本應該定義且只定義相應的實體類,供全局調用(然而實際情況可能不是這樣,后面會說到)。在微盤應用中,幾乎所有的實體類是以 xxx+info命名的,這種命名也是我贊成的一種命名,從語義上我覺得xxxModel.java這種命名更生動更真實,xxxModel給我一種太機 械太死板的感覺,這點完全是個人觀點,具體操作中以個人習慣為主。還有一點,在具體的xxxInfo,java中有很多實體類中是沒有get/set的方 法,而是直接使用public的字段名。這一點,我是推薦這種方式的,特別是在移動開發中,get/set方法很多時候是完全沒有必要的,而且是有性能消 耗的。當然如果需要對字段設置一定的控制,get/set方法也是可以酌情使用的。

2. 久憶日記

相比于微盤的工程結構,久憶日記的結構稍微復雜了一些。如下圖:

2011062523523174.png

1).第一層和前面微盤一樣的.

2).第二層則沒有模塊分類,直接把需要的具體實現類都放在下面,主要日記的一些日記相關的Activity。

3).第二層的實體包命令為model包,里面不僅存放了實體類xxx.java,而且存放了更高一級的實體類的相關類,比如 xxxManager.java,xxxFactory.java.關于這一點,我們可以參考一下android.jar中結構,我們發 現,Activity.java和ActivityManager.java,View.java和 ViewManager.java,Bitmap.java和BitmapFactory.java等等N多類似的一對類都在同一個包下,我個人覺得實體 包下存放實體類相應的Manager和Factoty類也是正確的,是我們應該采納的一種結構。這里就打破了前面微盤中說的實體包下存放且只存放實體類的 說法了。在現實中,從靈活和合理的角度,久憶日記的這種實體包中存放對象內容更加實用。

4).第二層中增加了前面微盤中沒有涉及到的config,constant和common包。第一,其中config中存儲一些系統配置,比如名稱,應 用參數等系統級的常量或者靜態變量,當然,如果你有其他大模塊的配置,比如如果擁有復雜的用戶管理模塊的話,完全可以增加一個 UserConfig.java中存儲用戶的一些配置信息等等。第二,constant包,此包下存放的都是public static final常量,定義狀態,類型等等。出于性能考慮,android開發中我不推薦使用枚舉。common包中定義一個公用庫,這里因為應用單一,無法很 好的說明common包內容結構。

5).common包要涉及后面多個軟件比較后我們再得出結論。

通過久憶日記的分析,借鑒到了不少的東西,使我們的架構更豐滿更強大了。

3. 網易新聞

網易新聞確實做的不錯,從應用的角度看,是我最欣賞的應用之一。它的工程結構是怎么樣的呢?

2011062601393332.png

網易新聞的工程結構和前面2各app又有很多的不同,它并沒有按照模塊來分,而是主要按照組件的類型來分的,然后把此類型所有的類全部放在其下。那么這種把所有activity全部放在activity包下的分法的確在android開發中比較普遍。

1).第一層被分成了兩層,可以看出來,這里肯定是采用了公用包jar,如此說來,我們開發公用包的時候也應該按照"公司域名+公用模塊名稱"組合方式來命名比較好。

2).第三層(綠色層)中activity和service包下都是存放所有的activity組件和service組件,其實這里面包含了一種代碼習 慣。往往activity相關的類如監聽器,線程,適配器等非常多的類,這些不好直接丟在activity包下,而是直接寫在相應的activity中以 匿名或者內部類形式定義,否則activity包和service包看上去會比較雜亂。

因為android的app很可能不是很大,activity或者service包也不會雜亂,所以網易新聞的這種方式也是很有參考借鑒價值的。

4. 小米應用

小米應用包括3個應用,小米分享,小米閱讀,小米標簽,從實際代碼開發來看,我感覺不是同一個團隊,或者同一組人開發的。 這種情況下,他們的架構又使如何?

2011062610021614.png

2011062610022797.png

上面的結構以及結構內部的細節其實很多地方我都是不大茍同的,但是能做出來好東西就是值得大家學習的,所以我只把其中我認為最值得學習的一點拿出來說。

首先,widget,provider這些特殊模塊分類建立單獨的模塊包即可,這里久不多說什么。

第二,通過觀察,我們發現小米分享中每個應用都有common包,不僅有應用程序級別的common包,而且有應用程序內級別的common包。我想說的 是,android開發中隨著項目開發的積累,確能提取到很多公用的方法、類、功能模塊。各個項目之間如此,各個項目內部也是如此,所以針對項目類被各個 模塊調用的方法,類也可以提取出相應的公用庫。

那么這里有個問題,公用common包的內部包可能涉及到很多的內容,是否要分包分級呢,又如何分包分級?我覺得,這個因情況而已,一般來說移動開發,為 了減少包的大小,我們會控制common包的膨脹,往往common包僅僅包括一些最簡潔最經典的東西,東西又很少的話就無需分包,但是如果貴公司開發成 百上千,每個項目都用到行為分析,意見反饋等公用模塊,分一下包會更清楚一點。總而言之,分不分包無關緊要,盡量讓你的代碼結構清晰,思路了然就好。

5. 聚各家之長,集大家之成

上面粗略的分析之后,我們應該對android程序的架構有一個感覺,清晰而雜亂。我也沒有去了看更多其他應用的結構,暫時就總結一下,得出一個我們自己的通用的工程結構。

假如公司名為tianxia,目前公司準備開發讀書應用,交友應用,生活服務應用。

第一時間我們應該得出下面這種整個的架構(具體的app開發當然要分開):

2011062610544467.png

公司下開發3個應用reader,friend,life,其中common包為這三個應用共用,config,oauth為可選,view存放一些最通 用的自定義view,比如對話框,定制的列表等,如果你覺得有些view可能不會通用,最好把它放在應用程序類的common包下。

如果各位看過Android學習系列(6)--App模塊化及工程擴展的話,對于這種多應用模式,應該存在android庫共用情況,來解決資源替換,工程復用的問題。所以我又修改如下:

2011062612094744.png

其中BaseApplication做一些所有app都會用到的基礎初始化或者配置。之后其他應用的application應該都繼承此BaseApplication。

base是一個android庫,也是一個完整的android工程,而common只是一個jar文件,當然你也可以根據需要作為android庫來開發。其他主工程reader,friend,life應該引用base工程。

ad包存放公司自定義的一些軟廣告。

feedback包下存儲一些用戶反饋等通用功能模塊。

其實,很多情況下,upgrade模塊也可以添加到base工程下,制定統一的軟件升級機制。

接下來我們以reader為例子,來詳細完成它的工程結構的設計。

2011062612384522.png

其中,config包下的AppConfig.java存放應用程序的根配置,比如版本,目錄配置等等。

module包下分為各個模塊,blog為博客模塊,bbs為論壇模塊,person為整站個人信息模塊,widget表示一種特殊功能模塊。

common包下存放一些工具類,本應用程序的一些自定義View等等。

再結合之前所講的內容,我們把整個串起來,完善一個reader的最后的架構如下(兩外兩個freind和life亦是類似如此):

2011062614353019.png

注意:1).功能模塊和類型模塊均可以劃分,如果沒有需要的話,模塊的劃分都可以省略。

2).activity和service這類組件劃分,如果沒有需要的話,組件的劃分都可以省略。

3).所有的劃分,如果沒有需要的話,所有的劃分都可以省略。

但是,但是,這種分類,我個人還是覺得層次清晰,架構明朗,值得參考的,當然其中很多細節我也沒有仔考慮,如有不妥,還請發現者指出。

責任編輯:徐川 來源: eoe
相關推薦

2024-09-20 08:04:54

2011-05-20 15:41:11

Oracle代碼

2011-04-12 13:34:05

Oracle

2019-12-12 15:39:28

大數據IT互聯網

2011-05-31 13:12:15

Android 目錄結構

2013-01-16 14:19:03

Android工程目錄結構Android開發

2016-10-24 14:53:30

Android app使用技巧

2010-01-26 17:53:30

Android代碼結構

2013-01-17 15:26:21

Android工程目錄結構Android開發

2009-04-03 08:28:39

2009-12-17 17:46:26

Ruby編寫問題

2011-03-29 14:58:24

存儲備份

2020-07-24 08:50:17

Redis數據庫

2023-12-27 12:12:35

NumPy函數數組

2009-12-18 17:20:00

Ruby核心類

2011-09-15 09:34:48

ubuntu輸入法

2009-12-17 11:14:50

Ruby on Rai

2019-12-10 09:54:20

高德APP架構全鏈路

2009-10-16 13:24:53

2019-08-29 14:30:16

代碼開發工具
點贊
收藏

51CTO技術棧公眾號

成人黄色免费观看| 久久伦理网站| 你懂得视频在线观看| 色8久久久久| 亚洲另类中文字| 精品伦精品一区二区三区视频 | 九九综合九九| 91精品国产欧美一区二区| 久久亚洲欧美日韩精品专区| 亚洲天天影视网| 亚洲综合国产| 亚洲天堂网站在线观看视频| 日产日韩在线亚洲欧美| 国产在线a视频| 成人欧美一区二区三区的电影| 国产精品网站在线播放| 动漫3d精品一区二区三区| 日本免费在线观看视频| 亚洲人metart人体| 精品视频久久久久久| 成人亚洲免费视频| 亚洲欧美小说色综合小说一区| 亚洲欧美日韩中文字幕一区二区三区| 久热这里只精品99re8久| 一级全黄裸体免费视频| 亚洲影视综合| 欧美精品电影免费在线观看| 激情五月激情综合| 久久av免费| 亚洲国产精品高清久久久| av在线网址导航| 电影亚洲一区| 欧美日韩一区二区免费在线观看| 992tv快乐视频| 免费在线观看av片| 国产日韩精品一区二区三区 | 国产亚洲综合av| 成人片在线免费看| 国产精品羞羞答答在线| 日韩福利视频网| 奇米4444一区二区三区| 国产精品第72页| 欧美激情亚洲| 久久av中文字幕| 女性裸体视频网站| 国产一区二区三区四区| 亚洲精品日韩久久久| 69xxx免费视频| 51vv免费精品视频一区二区| 日韩欧美一级在线播放| 日韩av.com| 欧美天堂一区| 欧美日韩亚洲综合在线 | 国产一区二区在线电影| 国产欧美精品一区二区三区介绍| 最新中文字幕在线观看视频| 日韩不卡在线观看日韩不卡视频| 日本在线精品视频| 国产又大又黄视频| 国产一区二区三区成人欧美日韩在线观看 | 亚洲国产成人91porn| 黄色小视频大全| 色婷婷在线播放| 亚洲观看高清完整版在线观看| 日本久久久网站| 牛牛精品视频在线| 亚洲午夜久久久久久久久电影网| 成人在线播放网址| 182在线视频观看| 粉嫩av一区二区三区免费野| 成人观看免费完整观看| 天堂久久午夜av| 在线播放视频一区| 亚洲热在线视频| 中文字幕一区日韩精品| 亚洲第一精品自拍| 日韩人妻无码精品综合区| 欧美日韩有码| 成年人精品视频| 国产极品在线播放| 久久久久久色| 91视频九色网站| 好吊视频一二三区| 久久久综合激的五月天| 婷婷四房综合激情五月| av网站网址在线观看| 亚洲国产精品久久久久秋霞影院 | 三级影片在线看| 韩国久久久久| 欧美综合国产精品久久丁香| 亚洲一区二区人妻| 国产成人综合亚洲网站| 久久久久久久久一区| 91亚洲欧美| 亚洲国产综合人成综合网站| 女人另类性混交zo| 久久99精品久久久野外观看| 日韩精品小视频| 又色又爽的视频| 亚洲精品资源| 国产精品视频1区| 日本xxxxxwwwww| 中文字幕精品综合| 成年人看的毛片| 粉嫩91精品久久久久久久99蜜桃 | 日本精品一二三| 国产麻豆精品久久| 欧美国产日本高清在线 | 久久精品亚洲a| 日韩网站在线| 91中文字幕一区| 黄色小视频在线免费观看| 亚洲视频在线一区| 国产一级片黄色| 国产日韩三级| 久热精品在线视频| 狠狠狠狠狠狠狠| 不卡电影免费在线播放一区| 在线免费观看成人| 欧美xxxx做受欧美护士| 精品91自产拍在线观看一区| 午夜国产小视频| 久久电影一区| 国内精品视频免费| 影音先锋男人在线资源| 精品视频全国免费看| 无码人妻精品一区二区三区温州| 好看不卡的中文字幕| 国产剧情日韩欧美| 男女污污视频在线观看| 五月婷婷欧美视频| 亚洲成人av免费观看| 91欧美在线| 国产精品高潮呻吟视频| 美国成人毛片| 欧美日韩免费看| 性色av蜜臀av浪潮av老女人| 欧美午夜国产| 99精品国产一区二区| 免费av网站在线看| 精品视频一区二区三区免费| 亚洲а∨天堂久久精品2021| 美女诱惑一区| 狠狠色伊人亚洲综合网站色 | 日本精品一区二区三区在线播放视频| 日本美女一级视频| 亚洲午夜国产一区99re久久| 国产人妖在线观看| 欧美日韩视频一区二区三区| 亚洲xxxxx| aaa大片在线观看| 日韩欧美精品在线视频| 亚洲国产美女视频| 国产一区二区三区国产| 老汉色影院首页| 蜜桃在线一区| 欧美精品国产精品日韩精品| 亚洲va欧美va| 精品免费在线观看| 搡老熟女老女人一区二区| 国产情侣久久| 欧美资源一区| 欧美日韩卡一| 久久国产精彩视频| 亚洲成人精品女人久久久| 亚洲一区影音先锋| 国产精品无码网站| 久色成人在线| 中文字幕在线亚洲三区| 国产精品美女久久久久人| 萌白酱国产一区二区| 亚洲精品免费在线观看视频| 精品欧美一区二区三区| 中文字幕被公侵犯的漂亮人妻| 麻豆国产欧美一区二区三区| 最新精品视频| 国产成人福利av| 日韩av三级在线观看| 黄色网页在线播放| 欧美成人艳星乳罩| 天天干天天干天天| 国产精品久久久久aaaa樱花| 丰满人妻一区二区三区大胸| 中文字幕中文字幕在线中高清免费版| 1769在线观看| 九色网友自拍视频手机在线| 91视视频在线直接观看在线看网页在线看| 日本a视频在线观看| 久久91精品| 91人人爽人人爽人人精88v| 欧美6一10sex性hd| 精品视频久久久久久| 亚洲视频中文字幕在线观看| 亚洲最大的成人av| 亚洲色成人网站www永久四虎| 激情综合亚洲精品| 国产69精品久久久久久久| 不卡在线一区二区| av免费精品一区二区三区| 偷拍中文亚洲欧美动漫| 欧美成人免费观看| 欧美欧美欧美| 欧美mv日韩mv亚洲| 中文字幕乱伦视频| 亚洲高清免费在线| 黄色裸体一级片| 91蝌蚪porny九色| 波多野结衣中文字幕在线播放| 米奇777在线欧美播放| 最新黄色av网站| 欧美禁忌电影网| 国产精品国产亚洲精品看不卡15| 免费日韩成人| 日本高清视频精品| 在线观看的网站你懂的| 中文字幕日韩欧美| 午夜福利理论片在线观看| 欧美一区二区黄| 中文字幕久久网| 欧美日韩亚洲系列| 日韩黄色a级片| 亚洲精品久久7777| 国产探花视频在线| 国产亚洲一区二区三区四区| 中文字幕 日本| 国产99精品国产| 国内自拍第二页| 青青草伊人久久| 国产成人精品无码播放| 亚洲精品日韩久久| 91视频 - 88av| 中文字幕亚洲综合久久五月天色无吗''| 台湾成人av| 蜜臀av免费一区二区三区| 国外成人免费视频| 白白在线精品| 国产伦视频一区二区三区| 久久久久久久久久久久电影| 国产精品爽黄69天堂a| 国产一区二区主播在线| 日本精品久久电影| 在线女人免费视频| 97成人精品视频在线观看| 日本天码aⅴ片在线电影网站| 欧美乱妇高清无乱码| 欧美日韩xx| 日韩少妇与小伙激情| 永久免费在线观看视频| 中文字幕成人精品久久不卡| 国产精品四虎| 在线看日韩欧美| 97人人在线| 色av中文字幕一区| 嫩草在线视频| 欧美日韩xxxxx| 成人性生交大片免费看网站| 97精品国产97久久久久久春色| 激情视频网站在线播放色| 欧美亚洲一级片| 久久青青视频| 国产精品专区第二| 精品亚洲a∨一区二区三区18| 99精品国产一区二区| 激情小说亚洲色图| 久久久99国产精品免费| 九九视频免费观看视频精品 | 亚洲日产av中文字幕| 美女主播视频一区| 欧洲视频一区| 黑人巨大国产9丨视频| 国产精品99一区二区| 国产婷婷一区二区三区| 欧美一区=区| 少妇一级淫免费播放| 国内外成人在线视频| 国产大尺度视频| 国产色综合久久| 一区二区视频免费看| 五月综合激情网| 在线观看中文字幕av| 日韩精品中文字幕一区二区三区| 午夜福利一区二区三区| 在线亚洲午夜片av大片| 成人黄色在线电影| 1769国产精品| av日韩一区| 久久精品99久久| 久久久9色精品国产一区二区三区| 欧美亚洲色图视频| 日韩经典中文字幕一区| 97免费公开视频| 91美女精品福利| 天天综合天天做| 一本大道久久a久久精品综合| 奇米精品在线| 婷婷激情四射网| av一区二区久久| 超碰人人人人人人人| 亚洲自拍偷拍av| 久久久精品视频网站| 久久精品久久久精品美女| 欧美视频专区一二在线观看| 九九久久99| 国产成人精品亚洲线观看| 日韩久久久久久久| 欧美电影三区| 亚洲国产日韩欧美综合久久| 日本精品一区二区| 57pao国产一区二区| 水蜜桃一区二区| 亚洲福利电影| 在线观看岛国av| 免播放器亚洲| 在线精品视频免费播放| 国产精品成人国产乱一区| 国产又黄又大又爽| 欧美成人三级在线| 午夜在线免费观看视频| 亚洲国产成人高清精品| 98精品在线视频| 香蕉污视频在线观看| 欧美日韩久久久| 日批视频免费播放| 久久视频免费观看| 久久人体大尺度| 精品国产一区二区三区久久久久久| 国产精品毛片一区二区在线看| 国产熟女高潮视频| 成人午夜电影久久影院| 中文字幕五月天| 激情亚洲网站| 日本久久精品电影| 久久精品国产理论片免费| 国产黄a三级三级三级av在线看| 日韩av观看网址| 加勒比视频一区| 成人毛片100部免费看| 狠狠色丁香久久婷婷综合_中| 中文字幕人妻一区二区三区在线视频| 亚洲国产wwwccc36天堂| 蜜桃视频污在线观看| 777a∨成人精品桃花网| 一区二区三区我不卡| 天堂中文8资源在线8| 555www成人网| 欧美xxxx在线| 欧美成人xxxxx| 97久久久精品综合88久久| 日韩激情一区二区三区| 日韩欧美国产1| 欧美人与性动交α欧美精品图片| 91日韩久久| 欧美日韩免费| a视频免费观看| 国产在线播精品第三| 欧美xxxxx在线视频| 91在线一区二区| 国产成人无码av| 亚洲欧洲自拍偷拍| 日韩av超清在线观看| 亚洲国产一区二区三区在线| 日韩国产精品久久久久久亚洲| 成人无码av片在线观看| 欧美日韩一级片在线观看| 国产精品扒开做爽爽爽的视频| 3d蒂法精品啪啪一区二区免费| 韩国精品一区二区三区| 亚洲AV无码国产精品| 欧美视频一区二区三区四区| 毛片在线不卡| 粉嫩av四季av绯色av第一区| 亚洲狼人精品一区二区三区| 五月婷婷综合在线观看| 欧美亚洲图片小说| 国产激情在线视频| 国产精品一区二区三区精品| 久久精品30| www深夜成人a√在线| 亚洲成av人片在线观看香蕉| 欧美aa一级| 亚洲精品一区二区毛豆| 国产一区二区精品在线观看| 亚洲综合一二三| 中文字幕日韩专区| www.丝袜精品| 黄色片在线免费| 亚洲影院理伦片| 国内精品一区视频| 亚洲一区久久久| 先锋影音久久久| 欧美色图亚洲天堂| 亚洲美女动态图120秒| 精品国产一区二| 777久久久精品一区二区三区| 国产精品麻豆一区二区| 秋霞av鲁丝片一区二区| 国产欧美一区二区三区久久| 国产日韩1区| 中文字幕手机在线观看| 亚洲欧美日韩精品久久亚洲区 |