"重启"Activity中的一点小毛病

我们在通过setTheme() 更换主题(实现"夜间模式"等等..)的时候,有时需要"重启"Activity

比较模板的代码是这样的

Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
复制代码

通过getIntent() 方法获得了含有自身Activity的Intent,同时清除了一下Activity的跳转动画.很简单.

但是在今天测试的时候发现这种方法貌似有个小毛病,症状描述如下(实际开发基本不会发生):

因为此方法是先将Activity执行finish() 然后执行startActivity开启Activity,在此方法中,在onCreate() 方法中设置的主题的方式,如果当前的Activity是此Application中的最后一个Activity,那么在这个Application中没有Activity显示期间(最后一个Activity onPause() 之后,开启的Activity的onResume() 之前,都会使用最后关闭的这个Activity在的清单文件中的默认主题作为此Application的界面,显示在前台.

而且通过此方法获得的Intent开启的Activity和通过new Intent() 创建的Intent是两种性质,前者不能直接开启Activity

转载于:https://juejin.im/post/5a31ee32f265da431c705181

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值