活動的最佳實踐(Activity)

你已經(jīng)掌握了相關(guān)活動非常多的知識,不過恐怕離完全靈活運用還有一段距離。雖然知識點只有這么多,但運用的技巧卻是多種多樣的所以扁眯,這里我準備教你關(guān)于活動的最佳實踐技巧,這些技巧在你以后的工作中將會非常有用翅帜,

2.6.1 知曉當前是哪一個活動

? ? ? ? ? ? ?這個技巧將會教你如何根據(jù)當前的界面就能判斷出這是哪一個活動姻檀。可能不會覺得挺納悶的涝滴,我自己寫的代碼怎么會不知道哪一個活動啦绣版?很不幸的是,在你真正進入企業(yè)以后歼疮,更有可能的是接手一份別人的代碼杂抽,因為你剛進公司就正好有一個新項目啟動的幾率并不高。閱讀別人的代碼有時是一個很頭痛的問題韩脏,就當你需要在某個界面上修改一些非常簡單的東西時缩麸,半天找不到這個界面對應(yīng)哪一個活動。學會了本節(jié)的技巧后赡矢,這對你來說就再也不是難題了杭朱。

? ? ? ? ? 我們還是在ActivityTest項目的基礎(chǔ)上修改,首先需要新建一個BaseAcyivity類吹散。

注意這里是BaseActivity和普通活動創(chuàng)建方式并不一樣弧械,因為我們不需要讓BaseActivity在AndroidManifest.xml中注冊,所以選擇創(chuàng)建一個普通的java類就可以了空民。然后讓BaseActivity繼承自AppCompatActivity刃唐,并重寫onCreat()方法,如下所示:

我們在oncreat()方法中獲取了當前實例的類名,并通過Log打印出來唁桩。

接下來我們需要讓BaseActivity成為ActivityTest項目中所有活動的父類闭树。讓其他的活動不在繼承AppCompatActivity耸棒,而繼承自BaseActivity荒澡。而由于BaseActivity有繼承自AppCompatActivity,所以項目中所有活動的現(xiàn)有功能并不會受影響与殃,他們?nèi)匀煌耆^承Activity中所有特性单山。

所以當進入不同的Activity時,都會打印出當前activity的名稱幅疼。

現(xiàn)在當我們進入到一個活動界面米奸,該活動的類名就會被打印出來,這樣我們就可以時時刻刻知曉當前界面對應(yīng)的是哪一個活動了爽篷。

2.6.2 ?隨時隨地的退出程序

如果目前你的手機界面還停留在ThirdActivity悴晰,你會發(fā)現(xiàn)當前想退出程序非常的不方便,需要連續(xù)3次Back鍵才行逐工。按Home鍵只是把程序掛起铡溪,并沒有退出程序。其實這個問題就是以引出你的思考泪喊,如果我們的程序需要一個注銷或者退出的功能怎么辦啦棕硫?必須要有一個隨時隨地的能退出程序的方案才行。

其實解決思路也很簡單袒啼,只需要有一個專門的集合類對所有的活動進行管理就可以了哈扮,下面我們就來實現(xiàn)一下。

新建一個ActivityCollector類作為活動的管理器蚓再,代碼如下:


在活動管理器中滑肉,我們通過一個List來暫存活動,然后提供了一個addActivity()方法用于向List中添加一個活動摘仅,提供了一個removeActivity方法用于從List中移除活動靶庙,最后提供了一個finish()方法用于將List中存儲的活動全部銷毀調(diào)。

接下來修改BaseActivity中的代碼实檀,如下所示:

? ? ? ? ?在BaseActivity的onCreat()方法中調(diào)用ActivityCollector的addActivity()方法惶洲,表明將當前正在創(chuàng)建的活動添加到活動管理器里,然后在BaseActivity()中重寫onDestroy()方法膳犹,并調(diào)用ActivityCollectroy的removeActivity()方法恬吕,表明講一個馬上要銷毀的活動從管理器中移除。

? ? ? ? ?從此以后须床,不管你現(xiàn)在什么地方退出程序铐料,只需要調(diào)用ActivityCollectroy。finishAll()方法就可以了。例如在ThirdActivity界面想通過點擊按鈕直接退出程序钠惩,只需要將代碼改成如下


2.6.3 啟動活動的最佳寫法

啟動活動的方法相信你已經(jīng)非常熟悉了柒凉,首先通過Intent構(gòu)建出當前的“意圖”,然后調(diào)用startActivity()或startActivityForResult()方法將活動啟動以來篓跛,如果有數(shù)據(jù)需要從一個活動傳遞到另一個活動膝捞,也可以借助Intent()來完成。

假設(shè)SecondActivity中需要用到兩個非常重要的字符串參數(shù)愧沟,在啟動SecondActivity的時候必須傳遞過來蔬咬,那么我們很容易會寫出如下代碼:

I

這樣寫是完全正確的,不管是從語法上還是規(guī)范上沐寺,只是在真正的項目中經(jīng)常會有對接的問題林艘。比如SecondActivity并不是由你開發(fā)的,但是現(xiàn)在你負責的部分需要有啟動SecondActivity這個功能混坞,而你卻不清楚啟動這個活動需要傳遞那些數(shù)據(jù)狐援。這時無非就有兩種辦法,一個是你自己趣閱讀SecondActivity中的代碼究孕,二是詢問負責編寫SecondActivity中的同事啥酱,會不會覺得很麻煩?其實只需要換一種寫法蚊俺,就可以輕松解決掉上面的窘境懈涛。

修改SecondActivity中的代碼,如下圖所示:


? ? ? ? ?我們在SecondActivity中添加了一個actionStart()方法泳猬,在這個方法中完成了Intent的構(gòu)建批钠,另外所有SecondACtivity中需要的數(shù)據(jù)都是通過actionStart()方法的參數(shù)傳遞過來,然后把他們存·儲到Intent中得封,最后調(diào)用startActivity埋心。

? ? ? ? ? 這樣寫的好處在哪兒里?最重要的一點就是一目了然忙上,SecondActivity所需要的數(shù)據(jù)在方法參數(shù)中全部體現(xiàn)出來了拷呆,這樣即使不用認真閱讀SecondActivity需要傳遞那些數(shù)據(jù)。另外疫粥,這樣寫還簡化了啟動活動的代碼茬斧,現(xiàn)在只需要一行代碼就可以啟動了SecondActivity(),如下所示:

養(yǎng)成一個良好的習慣梗逮,格尼編寫的每個活動都添加類似的啟動方法项秉,這樣不僅可以讓啟動活動變得非常簡單,還可以節(jié)省不少你同事的時間慷彤。

2.7 ?小節(jié)與點評

? ? ? ? ? ? ?真是感覺好疲憊呀娄蔼!沒錯學習了這么多的東西不疲憊才怪怖喻。但是你內(nèi)心那種掌握了知識的喜悅感相信也無法掩蓋。本章的收貨非正常的多岁诉。不管是理論型還是實踐型的東西都涉及很多锚沸,從活動的基本用法,到啟動活動和傳遞數(shù)據(jù)方式涕癣,再到活動的生命周期哗蜈,以及活動的啟動模式,你幾乎已經(jīng)學會了關(guān)于活動的所有重要的知識點属划。另外在本章的最后恬叹,還學習了幾種可以應(yīng)用在活動中的最佳技巧候生,好不夸張的說同眯,你在android活動方面已經(jīng)算是一個小高手了。

? ? ? ? ? ? ?不過你的Android旅途才剛剛開始啦唯鸭,后面需要學習的東西還很多须蜗,也許會比現(xiàn)在累,一定要做好心理準備目溉∶靼梗總體來說,我給你現(xiàn)在狀態(tài)的打滿分缭付,畢竟你已經(jīng)學會了那么多東西柿估,也是時候放松一下了。自己適當控制一下休息事件陷猫,然后我們繼續(xù)前進吧秫舌!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绣檬,隨后出現(xiàn)的幾起案子足陨,更是在濱河造成了極大的恐慌,老刑警劉巖娇未,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墨缘,死亡現(xiàn)場離奇詭異,居然都是意外死亡零抬,警方通過查閱死者的電腦和手機镊讼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來平夜,“玉大人蝶棋,你說我怎么就攤上這事∪烀ⅲ” “怎么了嚼松?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵嫡良,是天一觀的道長。 經(jīng)常有香客問我献酗,道長寝受,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任罕偎,我火速辦了婚禮很澄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颜及。我一直安慰自己甩苛,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布俏站。 她就那樣靜靜地躺著讯蒲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肄扎。 梳的紋絲不亂的頭發(fā)上墨林,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音犯祠,去河邊找鬼旭等。 笑死,一個胖子當著我的面吹牛衡载,可吹牛的內(nèi)容都是我干的搔耕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼痰娱,長吁一口氣:“原來是場噩夢啊……” “哼弃榨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猜揪,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤惭墓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后而姐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腊凶,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年拴念,在試婚紗的時候發(fā)現(xiàn)自己被綠了钧萍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡政鼠,死狀恐怖风瘦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情公般,我是刑警寧澤万搔,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布胡桨,位于F島的核電站,受9級特大地震影響瞬雹,放射性物質(zhì)發(fā)生泄漏昧谊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一酗捌、第九天 我趴在偏房一處隱蔽的房頂上張望呢诬。 院中可真熱鬧,春花似錦胖缤、人聲如沸尚镰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狗唉。三九已至,卻和暖如春撩独,著一層夾襖步出監(jiān)牢的瞬間敞曹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工综膀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人局齿。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓剧劝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抓歼。 傳聞我的和親對象是個殘疾皇子讥此,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

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