windowIsTranslucent导致的问题总结

windowIsTranslucent就是让Activity窗口透明,我们一般写的Activity的contentView外面还包了好几层父容器,所以你contentView是透明的还是看不到当前Activity下面的内容。想要实现Activity背景透明就要在主题里设置windowIsTranslucent为true,但这样后会导致很多问题,值得大家注意。下面是一些总结,看情况不断更新。

一、对Activity生命周期的影响

Activity A 启动 Activity B:
如果Activity B的主题属性windowIsTranslucent=true,则B的onStop和onDestroy一定在A的onStop调用之前,也就是说,你启动了Activity B,Activity A也看不到了,这时A的onStop是不会调用的。

二、对多进程的影响

理论上说,一个应用采用了多进程方案,运行在不同进程的组件不会相互影响,比如崩溃。通过在Manifest指定android:process=":test"即可让Activity等运行在packagename:test进程中。假设Activity A 启动了Activity B,Activity B运行在packagename:test进程,且Activity B设置了windowIsTranslucent 为 true,那么当Activity B崩溃后,整个应用都会退出,包括Activity A,并弹出系统的崩溃提示框。如果Activity B没有设置windowIsTranslucent 为 true,Activity B崩溃不会影响 Activity A。

你可能感兴趣的:(windowIsTranslucent导致的问题总结)