面向?qū)ο蟮氖澜缋铮谝粋€(gè)系統(tǒng)或者應(yīng)用的生命周期中礼旅,總會(huì)伴隨著對(duì)象的大量創(chuàng)建和銷毀膳叨。有的對(duì)象生命周期很短,如曇花一現(xiàn)痘系;有的生命周期卻很長(zhǎng)菲嘴,跟電視劇的主角一樣可以活到最后一集。具有主角光環(huán)的這個(gè)對(duì)象就是單例對(duì)象汰翠。 單例模式的目的就是確保在系統(tǒng)或應(yīng)用的生命周期中龄坪,一個(gè)類Class只有一個(gè)實(shí)例對(duì)象存在。
單例對(duì)象的特點(diǎn)之一就是該對(duì)象生命周期比較長(zhǎng)(當(dāng)然不排除某個(gè)子系統(tǒng)內(nèi)部的使用完畢后就置null)复唤,所以應(yīng)用的各個(gè)子功能或者系統(tǒng)都可以訪問使用它(前提是該單例對(duì)象是public的)健田。但是這樣會(huì)有一個(gè)內(nèi)存泄漏的風(fēng)險(xiǎn),如果單例對(duì)象持有了一個(gè)生命周期比較短的對(duì)象引用苟穆,那么這個(gè)短生命周期一直得不到釋放從而不能被系統(tǒng)回收抄课,就會(huì)造成內(nèi)存泄漏。比如Android中常見的Context雳旅、activity對(duì)象的泄漏跟磨。對(duì)短生命周期的對(duì)象來說,有一種求死不能的感覺攒盈。
另外該對(duì)象的關(guān)聯(lián)的狀態(tài)和數(shù)據(jù)是不能有變化的抵拘,否則會(huì)引起數(shù)據(jù)的錯(cuò)誤。
在Android中可能常見的單例對(duì)象有:
1型豁、EventBus對(duì)象
2僵蛛、Glide對(duì)象
3尚蝌、OkhttpClient對(duì)象
4、Android的ApplicationContext對(duì)象