Android 中不同的 activity 中實(shí)現(xiàn)共用一個(gè) ViewModel

Android 中不同的 activity 中實(shí)現(xiàn)共用一個(gè) ViewModel

在實(shí)際開發(fā)過(guò)程中表牢,一個(gè)activity_A會(huì)根據(jù)另一個(gè)activity_B的改變而做出相應(yīng)的變化滞详,聯(lián)想到利用viewmodel+livedata天生具有監(jiān)聽功能實(shí)現(xiàn)钢颂,在viewmodel中存放一個(gè)livedata變量泪姨,在需要改變的activity中添加對(duì)livedata的監(jiān)聽,實(shí)現(xiàn)上述想法。
在 activity_B 中創(chuàng)建一個(gè)靜態(tài)變量來(lái)存放 activity_B 的 viewmodelStoreOwner對(duì)象

companion object{
        var mActivity_B : ViewModelStoreOwner? = null
}

在其onCreate回調(diào)中給這個(gè)靜態(tài)變量賦值

override fun onCreate() {
        mActivity_B = this   //此處 activity_B 實(shí)現(xiàn)了ViewModelStoreOwner接口隘庄,直接賦值this就行
}

特別重要一點(diǎn)九串,由于此處的靜態(tài)變量持有“this”這個(gè)activity_B對(duì)象绞佩,會(huì)導(dǎo)致activity無(wú)法被回收,造成內(nèi)存泄漏猪钮,在activity 的 onDestroy() 的回調(diào)中將靜態(tài)變量釋放

override fun onDestroy() {
        super.onDestroy()
        mActivity_B = null
}

在 activity_A 中獲取到同一個(gè)ViewModel品山,然后利用監(jiān)聽,獲取viewmodel實(shí)現(xiàn):

private val shareViewModel : ShareViewModel by lazy {
  ViewModelProvider(Activity_B.mActivity_B?:this).get(ShareViewModel::class.java)
}

此后再在 activity_A 中創(chuàng)建livedata的監(jiān)聽烤低,然后編寫監(jiān)聽觸發(fā)邏輯肘交。

在此場(chǎng)景實(shí)現(xiàn),我還有個(gè)想法(待驗(yàn)證):由于 activity 的運(yùn)行中扑馁,loop是一直在循環(huán)的涯呻,嘗試在activity_B 中獲取到 activity_A 中的 looper 對(duì)應(yīng)的 MessageQueen 對(duì)象,然后在activityB中向獲取到的消息隊(duì)列中發(fā)送消息腻要,由 looper 實(shí)現(xiàn)監(jiān)聽回調(diào)复罐。(后期更新是否可行)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雄家,隨后出現(xiàn)的幾起案子效诅,更是在濱河造成了極大的恐慌,老刑警劉巖趟济,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乱投,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡咙好,警方通過(guò)查閱死者的電腦和手機(jī)该窗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)罩引,“玉大人嵌器,你說(shuō)我怎么就攤上這事〔愎” “怎么了杨伙?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)萌腿。 經(jīng)常有香客問我限匣,道長(zhǎng),這世上最難降的妖魔是什么毁菱? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任米死,我火速辦了婚禮锌历,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘峦筒。我一直安慰自己究西,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布物喷。 她就那樣靜靜地躺著卤材,像睡著了一般。 火紅的嫁衣襯著肌膚如雪峦失。 梳的紋絲不亂的頭發(fā)上扇丛,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音尉辑,去河邊找鬼帆精。 笑死,一個(gè)胖子當(dāng)著我的面吹牛材蹬,可吹牛的內(nèi)容都是我干的实幕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼堤器,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昆庇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闸溃,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤整吆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后辉川,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體表蝙,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年乓旗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了府蛇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屿愚,死狀恐怖汇跨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妆距,我是刑警寧澤穷遂,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站娱据,受9級(jí)特大地震影響蚪黑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一忌穿、第九天 我趴在偏房一處隱蔽的房頂上張望抒寂。 院中可真熱鬧,春花似錦伴网、人聲如沸蓬推。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糕珊,卻和暖如春动分,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背红选。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工澜公, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喇肋。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓坟乾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蝶防。 傳聞我的和親對(duì)象是個(gè)殘疾皇子甚侣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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