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

2017-02-04  本文已影响19人  pdog18

我们在通过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

上一篇 下一篇

猜你喜欢

热点阅读