"重启"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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容