windowIsTranslucent就是讓Activity窗口透明,我們一般寫的Activity的contentView外面還包了好幾層父容器绎谦,所以你contentView是透明的還是看不到當(dāng)前Activity下面的內(nèi)容。想要實(shí)現(xiàn)Activity背景透明就要在主題里設(shè)置windowIsTranslucent為true辟狈,但這樣后會(huì)導(dǎo)致很多問題菩混,值得大家注意弱贼。下面是一些總結(jié)撕攒,看情況不斷更新陡鹃。
一烘浦、對(duì)Activity生命周期的影響
Activity A 啟動(dòng) Activity B:
如果Activity B的主題屬性windowIsTranslucent=true,則B的onStop和onDestroy一定在A的onStop調(diào)用之前杉适,也就是說谎倔,你啟動(dòng)了Activity B柳击,Activity A也看不到了猿推,這時(shí)A的onStop是不會(huì)調(diào)用的。
二捌肴、對(duì)多進(jìn)程的影響
理論上說蹬叭,一個(gè)應(yīng)用采用了多進(jìn)程方案,運(yùn)行在不同進(jìn)程的組件不會(huì)相互影響状知,比如崩潰秽五。通過在Manifest指定android:process=":test"即可讓Activity等運(yùn)行在packagename:test進(jìn)程中。假設(shè)Activity A 啟動(dòng)了Activity B饥悴,Activity B運(yùn)行在packagename:test進(jìn)程坦喘,且Activity B設(shè)置了windowIsTranslucent 為 true,那么當(dāng)Activity B崩潰后西设,整個(gè)應(yīng)用都會(huì)退出瓣铣,包括Activity A,并彈出系統(tǒng)的崩潰提示框贷揽。如果Activity B沒有設(shè)置windowIsTranslucent 為 true棠笑,Activity B崩潰不會(huì)影響 Activity A。