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