Android 基礎(chǔ)重點回顧

  • 生命周期的跳轉(zhuǎn)
  • 應(yīng)用調(diào)試
  • fragment
  • RecyclerView
  • ConstrainLayout
  • 雙版面主從用戶界面
  • MVVM MVP

一、生命周期的跳轉(zhuǎn)

http://www.reibang.com/p/d7070d4827ba
http://www.reibang.com/p/fb44584daee3
activity 跳轉(zhuǎn)的順序是先pause當(dāng)前挂疆,啟動新界面再把之前的stop掉雁佳;
這樣設(shè)計的目的是pause已經(jīng)能釋放大量資源掀抹,為了保證界面切換的流暢度
onnewIntent啟動時機(jī)是啟動singleTop模式下的activity怜跑,或者給intent中添加一個flag后色瘩,或者activity在棧頂再啟動它又跛;
被啟動activity在棧頂?shù)膯禹樞蚴莗ause-onnewintent-onresume
被啟動activity在棧中的啟動順序是onnewIntent-onrestart-onstart-onresume

三碍拆、fragment
fragment生命周期是activity管理的,操作系統(tǒng)不關(guān)心慨蓝,所以fragment生命周期方法都是公共方法感混,activity要調(diào)用他們
1、生命周期如下:

onAttach--onCreate--onCreateView--onActivityCreated--onStart--onResume
--onPause--onStop--onDestoryView--onDestroy--onDetach

其中onAttach,onCreate,onCreagteView全部在setContentView方法中調(diào)用
2礼烈、fragment的使用
除了在xml中硬性添加fragment弧满,
唯一靈活的方法就是使用代碼添加,就是通過activity中的fragmentManager添管理fragment此熬,它會調(diào)用所管理的fragment的生命周期方法庭呜。
首先為fragment添加一個視圖容器,該容器可以用于托管其他的fragment犀忱,容器id標(biāo)識需要添加的fragment募谎,在fragmentManager管理的fragment隊列中,不同的fragment就是被容器id標(biāo)識并保存起來的阴汇,此外数冬,在設(shè)備旋轉(zhuǎn)或回收內(nèi)存時,fragmentManager能夠保存當(dāng)前隊列鲫寄,并在activity重建時恢復(fù)吉执。
3、設(shè)計思路

  • 如果有比較多的細(xì)小組件需要復(fù)用地来,比較好的方法就是使用自定義view
  • 一個屏幕最多使用2-3個fragment
    4戳玫、fragment之間的通信
    有幾種方法:
  • 通過fragment獲取activity實例,然后通過findFragmentbyId方法獲取其他fragment實例進(jìn)行通信
  • 通過fragmentintent-->Activity-->fragmentintent
    對端fragment通過getActivity獲取托管activity的信息未斑,缺陷就是拓展性差咕宿,fragment必須知道托管activity的實現(xiàn)細(xì)節(jié)。
  • fragment argument
    通過創(chuàng)建fragment之后,添加給activity之前府阀,給fragment添加參數(shù)為Bundle的argument缆镣,然后在fragment的生命周期方法中獲取argument
//在activity中調(diào)用fragment的生成方法,并添加bundle
public static CrimeFragment newInstance(UUID crimeId) {
        Bundle args = new Bundle();
        args.putSerializable(ARG_CRIME_ID, crimeId);

        CrimeFragment fragment = new CrimeFragment();
        fragment.setArguments(args);
        return fragment;
    }

//在fragment的生命周期方法中獲取bundle
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        UUID crimeId = (UUID) getArguments().getSerializable(ARG_CRIME_ID);
        mCrime = CrimeLab.get(getActivity()).getCrime(crimeId);
        mPhotoFile = CrimeLab.get(getActivity()).getPhotoFile(mCrime);
    }

這樣做的好處在于fragment可以作為一個獨立的組件使用试浙,無需知道activity的實現(xiàn)細(xì)節(jié)董瞻。而activity知道fragment的細(xì)節(jié)是合理的。
另一個好處就是fragment的argument能夠在fragment因為設(shè)備旋轉(zhuǎn)或者內(nèi)存回收時候保存數(shù)據(jù)田巴,如果使用其他方式比如實例變量保存數(shù)據(jù)钠糊,就容易丟失。雖然fragment中也有OnSavedInstanceState(Bundle)方法壹哺,但是一般argument更方便抄伍。
參考:
http://www.reibang.com/p/7ae890863307

四、RecyclerView
參考:
http://www.reibang.com/p/0ca3944a8acd

五管宵、ConstrainLayout
是伴隨AS2.2推出的一個新布局截珍,最大的特點就是十分適合用可視化的方式編輯,它是用約束的方式排版組件箩朴,能夠有效的解決布局嵌套過多的問題岗喉。
一個控件上下左右方向各有一個約束點,通過往約束點添加約束炸庞,控件的位置就能確定
約束能相對于父控件添加沈堡,也可以相對于其他控件進(jìn)行添加
此外在Inspector中橫縱的兩條軸能改變既定約束下的控件位置
any size是用于填充滿當(dāng)前控件的約束規(guī)則,對比于用于填充滿當(dāng)前控件的父布局的match parent
guideLines能夠作為水平/垂直對齊的標(biāo)尺燕雁。
通過上述的屬性诞丽,constrainLayout能夠較為輕松的實現(xiàn)比較復(fù)雜的UI,相對于RelativeLayout更加強(qiáng)大拐格。

六僧免、雙版面主從用戶界面
http://www.reibang.com/p/3ec5d7848e31

七、MVVM捏浊、MVP懂衩、MVC
MVVM:View--(dataBinding)--ViewModel--Model

  • View只負(fù)責(zé)監(jiān)聽數(shù)據(jù)變化并更新UI,不應(yīng)有任何數(shù)據(jù)邏輯操作金踪;
  • ViewModel負(fù)責(zé)業(yè)務(wù)邏輯處理并和View層傳遞數(shù)據(jù)變化信息浊洞,他們之間通過dataBinding雙向通信,ViewModel沒有持有view的耦合胡岔;
  • Model定義實體類法希,以及獲取業(yè)務(wù)數(shù)據(jù)模型,比如通過數(shù)據(jù)庫或者網(wǎng)絡(luò)來操作數(shù)據(jù)等靶瘸。
    有那么幾個優(yōu)勢:
    1苫亦、輕耦合毛肋,view和viewmodel之間沒有耦合,viewmodel不會持有view的引用
    2、異步線程更新UI屋剑,UI更新不再需要切換到主線程润匙,dataBinding會自動完成
    3、數(shù)據(jù)驅(qū)動唉匾,UI 的展現(xiàn)是依賴于數(shù)據(jù)的孕讳,數(shù)據(jù)的變化會自然的引發(fā) UI 的變化,而 UI 的改變也會使數(shù)據(jù) Model 進(jìn)行對應(yīng)的更新巍膘。
    有這三大優(yōu)勢帶來的額外福利就是協(xié)作和單元測試方便

開發(fā)中最明顯的改變就是dataBinding讓程序員不用再寫findViewById()卫病、setText()、setOnClickListener() 這類沒有營養(yǎng)的膠水代碼典徘。

參考:
http://www.reibang.com/p/153ba1adf4cc

MVP模式:
傳統(tǒng)的MVC模式中Activity承載了太多View好Controller的功能,耦合太大益咬。
MVP中將activity解放逮诲,利用View--Presenter--Model的架構(gòu),讓業(yè)務(wù)邏輯集中到Presenter中處理幽告,View層集中處理視圖邏輯梅鹦,View和Presenter層相互引用,這樣activity就能只負(fù)責(zé)生命周期的處理冗锁。
帶來的優(yōu)勢:

  • 分離了視圖邏輯和業(yè)務(wù)邏輯齐唆,降低了耦合
  • Activity只處理生命周期的任務(wù),代碼變得更加簡潔
  • 視圖邏輯和業(yè)務(wù)邏輯分別抽象到了View和Presenter的接口中去冻河,提高代碼的可閱讀性
  • Presenter被抽象成接口箍邮,可以有多種具體的實現(xiàn),所以方便進(jìn)行單元測試

參考:
http://www.reibang.com/p/babe8325f751

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叨叙,一起剝皮案震驚了整個濱河市锭弊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌擂错,老刑警劉巖味滞,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钮呀,居然都是意外死亡剑鞍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門爽醋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚁署,“玉大人,你說我怎么就攤上這事蚂四⌒斡茫” “怎么了就轧?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長田度。 經(jīng)常有香客問我妒御,道長,這世上最難降的妖魔是什么镇饺? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任乎莉,我火速辦了婚禮,結(jié)果婚禮上奸笤,老公的妹妹穿的比我還像新娘惋啃。我一直安慰自己,他們只是感情好监右,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布边灭。 她就那樣靜靜地躺著,像睡著了一般健盒。 火紅的嫁衣襯著肌膚如雪绒瘦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天扣癣,我揣著相機(jī)與錄音惰帽,去河邊找鬼。 笑死父虑,一個胖子當(dāng)著我的面吹牛该酗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播士嚎,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呜魄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了莱衩?” 一聲冷哼從身側(cè)響起耕赘,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膳殷,沒想到半個月后操骡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡赚窃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年册招,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勒极。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡是掰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辱匿,到底是詐尸還是另有隱情键痛,我是刑警寧澤炫彩,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站絮短,受9級特大地震影響江兢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丁频,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一杉允、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧席里,春花似錦叔磷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咖为,卻和暖如春秕狰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背案疲。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留麻养,地道東北人褐啡。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像鳖昌,于是被迫代替她去往敵國和親备畦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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