第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Android中的單身漢與應(yīng)用上下文?

Android中的單身漢與應(yīng)用上下文?

元芳怎么了 2019-06-18 15:50:00
Android中的單身漢與應(yīng)用上下文?回顧這一點(diǎn)后列舉使用單子的幾個(gè)問題看過幾個(gè)使用單例模式的Android應(yīng)用程序的例子后,我想知道使用單例而不是通過全局應(yīng)用程序狀態(tài)共享的單個(gè)實(shí)例(子類為android.os.Application并通過context.getApplication()獲得它)是否是個(gè)好主意。這兩種機(jī)制有哪些優(yōu)點(diǎn)/缺點(diǎn)?老實(shí)說,我希望在這篇文章中得到同樣的答案。單例模式與Web應(yīng)用程序,不是一個(gè)好主意!但適用于安卓系統(tǒng)。我說對了嗎?否則,DalvikVM有什么不同?編輯:我想就以下幾個(gè)方面發(fā)表意見:同步可重用性測試
查看完整描述

3 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

我非常不同意戴安·哈克伯恩的回答。我們一點(diǎn)地從我們的項(xiàng)目中移除所有的單點(diǎn)對象,以支持輕量級的、任務(wù)范圍的對象,當(dāng)您實(shí)際需要它們時(shí),這些對象可以很容易地重新創(chuàng)建。

單節(jié)點(diǎn)是測試的噩夢,如果初始化延遲,將引入“國家不確定性”具有微妙的副作用(當(dāng)將調(diào)用轉(zhuǎn)移到getInstance()從一個(gè)范圍到另一個(gè)范圍)。可見性被提到了另一個(gè)問題,因?yàn)閱卫馕吨?/trans>“全局”(=隨機(jī))訪問共享狀態(tài)時(shí),當(dāng)并發(fā)應(yīng)用程序中不正確同步時(shí),可能會(huì)出現(xiàn)微妙的bug。

我認(rèn)為這是一種反模式,這是一種糟糕的面向?qū)ο蟮娘L(fēng)格,本質(zhì)上相當(dāng)于維護(hù)全球狀態(tài)。

回到你的問題上:

雖然應(yīng)用程序上下文可以被認(rèn)為是單例,但它是由框架管理的,并且有一個(gè)很好的定義。生命周期、范圍和訪問路徑。因此,我認(rèn)為,如果你真的需要管理應(yīng)用-全球狀態(tài),它應(yīng)該去這里,沒有其他地方。再考慮一下真的需要一個(gè)單例對象,或者也可以重寫您的單例類來實(shí)例化執(zhí)行手頭任務(wù)的小的、短命的對象。


查看完整回答
反對 回復(fù) 2019-06-18
?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

我非常推薦單身人士。如果您有一個(gè)需要上下文的單例,請具有:

MySingleton.getInstance(Context c) {
    //
    // ... needing to create ...
    sInstance = new MySingleton(c.getApplicationContext());}

我更喜歡單身漢而不是應(yīng)用程序,因?yàn)樗兄诒3謶?yīng)用程序更有組織性和模塊化-而不是有一個(gè)需要維護(hù)整個(gè)應(yīng)用程序的全球狀態(tài)的地方,每個(gè)單獨(dú)的部分都可以自己處理。另外,在Application.onCreate()中,單例延遲初始化(應(yīng)請求)而不是引導(dǎo)您執(zhí)行所有初始化的路徑也是好的。

使用單子沒有本質(zhì)上的錯(cuò)誤。只要正確地使用它們,當(dāng)它有意義的時(shí)候。Android框架實(shí)際上有很多,因?yàn)樗梢跃S護(hù)每個(gè)進(jìn)程緩存的加載資源和其他類似的東西。

對于簡單的應(yīng)用程序,多線程不會(huì)成為單線程的問題,因?yàn)橥ㄟ^設(shè)計(jì),對應(yīng)用程序的所有標(biāo)準(zhǔn)回調(diào)都被分派到進(jìn)程的主線程上,所以除非通過線程顯式地引入多線程,或者通過將內(nèi)容提供程序或服務(wù)IBinder發(fā)布到其他進(jìn)程,否則不會(huì)發(fā)生多線程。

想想你在做什么就行了。*)


查看完整回答
反對 回復(fù) 2019-06-18
?
BIG陽

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

來自:開發(fā)人員>參考-應(yīng)用程序

通常不需要子類應(yīng)用程序。在大多數(shù)情況下,靜態(tài)單節(jié)點(diǎn)可以更模塊化的方式提供相同的功能。如果您的單例需要全局上下文(例如注冊廣播接收器),那么檢索它的函數(shù)可以在第一次構(gòu)造單例時(shí)在內(nèi)部使用Context.getApplicationContext()。


查看完整回答
反對 回復(fù) 2019-06-18
  • 3 回答
  • 0 關(guān)注
  • 458 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號