Android開發(fā)過程中框架是如何搭建的呢

開發(fā)Android時(shí),我們通常會(huì)為了更合理绢慢,高效灿渴,優(yōu)質(zhì)的開發(fā)項(xiàng)目,并不是上來就直接開始開發(fā)功能胰舆,而是會(huì)編寫一些暫時(shí)與功能無關(guān)的代碼骚露,這些操作被稱作搭建自己應(yīng)用程序的框架。一個(gè)優(yōu)質(zhì)的項(xiàng)目必定有一個(gè)精妙的框架缚窿。那么對(duì)于初學(xué)者而言棘幸,Android應(yīng)用框架到底應(yīng)該如何搭建,搭建的步驟是什么倦零,搭建過程中需要注意一些什么误续?

在搭建android應(yīng)用框架前,我們首先應(yīng)該清楚的就是光绕,這個(gè)框架需要達(dá)到什么效果女嘲,主要有以下三點(diǎn):

1) 降低項(xiàng)目的復(fù)雜性畜份;

2) 易擴(kuò)展诞帐、易修改、可重用性強(qiáng)爆雹、可維護(hù)性強(qiáng)停蕉;

3) 職責(zé)單一,功能清晰钙态;

明確了要達(dá)到的效果后慧起,就著手開始搭建應(yīng)用框架吧,主要有以下幾個(gè)步驟:

android項(xiàng)目工程搭建

在搭建工程結(jié)構(gòu)的時(shí)候可以盡量抽取一些共用的東西册倒,例如蚓挤,數(shù)據(jù)庫(kù)操作、base、task灿意、事件觀察者估灿、通用的工具類、android UI公共組件等等缤剧,這些東西應(yīng)該表現(xiàn)在代碼結(jié)構(gòu)中馅袁。

這些包名的作用一目了然,在別人接手這個(gè)項(xiàng)目的時(shí)候就會(huì)相對(duì)簡(jiǎn)單荒辕。

adapter適配器汗销,如果業(yè)務(wù)復(fù)雜,根據(jù)不同的業(yè)務(wù)可以添加子包來進(jìn)行分類抵窒;

base用來存放View的基類弛针,例如BaseAcitivity、BaseFragment李皇,甚至可以添加某些不同actionbar主題的Base類钦奋;

common當(dāng)然是存放一些共用的配置類信息,常量等等疙赠;

controller控制器付材,將一部分的業(yè)務(wù)類需求放到里面,充當(dāng)db和View交互的中間層圃阳,減少Activity中業(yè)務(wù)的復(fù)雜性厌衔;

event觀察者模式,事件通知捍岳;

task一些AsyncTask任務(wù)類富寿;

view一些自定義組件;

vo值對(duì)象锣夹,其實(shí)就是給各個(gè)組件使用的對(duì)象页徐,比如ListView的Item對(duì)象等等。

另外银萍,根據(jù)自己的一些業(yè)務(wù)需求变勇,我們可能需要單獨(dú)的抽取一些核心的包類。比如贴唇,理財(cái)類軟件在搭建工程結(jié)構(gòu)的時(shí)候搀绣,可以單獨(dú)抽出了2個(gè)JS相關(guān)的核心包類:

AppContext的處理

Application本身在一個(gè)應(yīng)用中只會(huì)存在一個(gè)實(shí)例,所以它一般用來存儲(chǔ)一些全局的變量和一些只需要處理一次的數(shù)據(jù)戳气。

context的管理 链患,和BaseActivity組合使用,將每一個(gè)Activity放到一個(gè)列表中瓶您,需要的時(shí)候直接使用即可麻捻;

初始化和記錄一些app信息纲仍,例如app的版本信息、設(shè)備信息等等贸毕;

初始化特定的業(yè)務(wù)需求巷折,例如有盟統(tǒng)計(jì)類、分享SDK崖咨、推送等等锻拘;

記錄應(yīng)用啟動(dòng)次數(shù)、是否第一次安裝等等击蹲,如果在第一個(gè)版本不加署拟,到后面版本使用次記錄會(huì)很麻煩;

記錄是否開啟處于調(diào)試模式歌豺,在輸出日志推穷、錯(cuò)誤消息的時(shí)候有用。

public final static boolean DEBUG=BuildConfig.DEBUG;

Base的處理

對(duì)BaseActivity的處理好壞一定程度上會(huì)影響項(xiàng)目的代碼可讀性类咧,在Base里面做一些規(guī)范化處理將會(huì)大大減少代碼的書寫量和提高可讀性馒铃。

將其Base類定義成抽象類,增加一些抽象方法痕惋,例如findView的處理郭赐、onClick的處理宪巨、初始化數(shù)據(jù)的處理衰粹。例如可以重載setContentView方法來規(guī)范子類的行為:

@Override

public void setContentView(int layoutResID) {

super.setContentView(layoutResID);

findView();

initView();

setOnClick();

}

/**

* 獲取布局控件

*/

protected abstract void findView();

/**

* 初始化View的一些數(shù)據(jù)

*/

protected abstract void initView();

/**

* 設(shè)置點(diǎn)擊監(jiān)聽

*/

protected abstract void setOnClick();

通過這種規(guī)范可以大大減少后期代碼的混亂愈腾,onCreat方法中存在大量雜亂無章的代碼;

定義一些ActionBar上面的保護(hù)類方法,比如返回按鈕堕虹、下拉事件等等;

數(shù)據(jù)庫(kù)的處理

可以在處理數(shù)據(jù)庫(kù)的時(shí)候采用ContentProvider的方式卧晓,這個(gè)方式有2個(gè)優(yōu)點(diǎn):

1)采用URI的方式訪問,更加符合我們的使用習(xí)慣赴捞;

2)隨時(shí)可以提供給其它應(yīng)用訪問數(shù)據(jù)庫(kù)逼裆;

圖片的處理

對(duì)圖片處理的文章很多,其實(shí)你只要把基本的一些開源框架原理搞清楚赦政,對(duì)普通應(yīng)用其實(shí)足夠了胜宇。這里就不在贅述。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昼钻,一起剝皮案震驚了整個(gè)濱河市掸屡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌然评,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狈究,死亡現(xiàn)場(chǎng)離奇詭異碗淌,居然都是意外死亡盏求,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門亿眠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碎罚,“玉大人,你說我怎么就攤上這事纳像【A遥” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵竟趾,是天一觀的道長(zhǎng)憔购。 經(jīng)常有香客問我,道長(zhǎng)岔帽,這世上最難降的妖魔是什么玫鸟? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮犀勒,結(jié)果婚禮上屎飘,老公的妹妹穿的比我還像新娘。我一直安慰自己贾费,他們只是感情好钦购,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著褂萧,像睡著了一般肮雨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箱玷,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天怨规,我揣著相機(jī)與錄音,去河邊找鬼锡足。 笑死波丰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舶得。 我是一名探鬼主播掰烟,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沐批!你這毒婦竟也來了纫骑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤九孩,失蹤者是張志新(化名)和其女友劉穎先馆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躺彬,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡煤墙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年梅惯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仿野。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铣减,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脚作,到底是詐尸還是另有隱情葫哗,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布球涛,位于F島的核電站劣针,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宾符。R本人自食惡果不足惜酿秸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望魏烫。 院中可真熱鬧辣苏,春花似錦、人聲如沸哄褒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呐赡。三九已至退客,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間链嘀,已是汗流浹背萌狂。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怀泊,地道東北人茫藏。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像霹琼,于是被迫代替她去往敵國(guó)和親务傲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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