在Android開(kāi)發(fā)中,設(shè)置Activity跳轉(zhuǎn)的出入場(chǎng)動(dòng)畫(huà)時(shí),為了解決跳轉(zhuǎn)閃黑屏問(wèn)題,總會(huì)增加android:windowIsTranslucent=true屬性,但目前這個(gè)屬性在Android10上存在以下問(wèn)題。
一、問(wèn)題背景:
在Android10中,假定三個(gè)Activity:A、B、C,B設(shè)置android:windowIsTranslucent=true,在A的onResume中finish掉B和C
二、問(wèn)題現(xiàn)象:
從A->B->C返回鍵到B 再B->C,會(huì)直接回到A
三、問(wèn)題原因:
在第二次進(jìn)入C之后,會(huì)回調(diào)A的onResume
四、排查過(guò)程:
1.查看日志,并未發(fā)現(xiàn)有崩潰,看到有onDestroy的打印,且有activity正常切換出場(chǎng)動(dòng)畫(huà),認(rèn)為是正常finish,排除crash
2.查看activity C代碼的邏輯,發(fā)現(xiàn)并未有主動(dòng)finish的情況
3.排查代碼中啟動(dòng)activity A的情況,加斷點(diǎn)調(diào)試,并沒(méi)有主動(dòng)去打開(kāi)activity A,但發(fā)現(xiàn)會(huì)進(jìn)入到activity A的onResume回調(diào)
4.排查版本,發(fā)現(xiàn)是由某一版本引發(fā),查看代碼提交記錄,排查提交內(nèi)容,在刪除掉android:windowIsTranslucent=true后,問(wèn)題消失,初步確認(rèn)是由該屬性引起。
5.自己寫demo驗(yàn)證,再次確認(rèn)是由此問(wèn)題引起
6.確認(rèn)多個(gè)廠商的手機(jī),基本可以確認(rèn)為Android10的共性問(wèn)題
五、問(wèn)題解決:
1.規(guī)避:去掉android:windowIsTranslucent=true屬性,優(yōu)化動(dòng)畫(huà)
六、問(wèn)題根因:
目前沒(méi)有排查Android10在這個(gè)版本上更改了什么內(nèi)容,待后續(xù)補(bǔ)充或者有其他了解的同學(xué)請(qǐng)留言