我在一个Activity的 onCreate 方法中有一些代码,并注意到它被调用了三次。这是正常行为吗?谢谢。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
if(savedInstanceState == null){
// everything else that doesn't update UI
}
}
onCreate
方法运行了两次。在超类的 onCreate
方法被调用后更改主题会导致这种情况发生。我在超类的 onCreate
方法之前设置主题,然后子类的 onCreate
方法就不会再次调用了。 public class XActivity extends YActivity { // XActivity is subclass
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xl);
}
...
public class YActivity extends AppCompatActivity { //YActivity is superclass.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme();
}
...
转换为:
public class YActivity extends AppCompatActivity { // YActivity is superclass.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
setTheme();
super.onCreate(savedInstanceState);
}
...
super.onCreate(savedInstanceState);
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
这个修复了它:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
super.onCreate(savedInstanceState);
我遇到了类似的问题,这是由MobileAds引起的。当我在super.onCreate(...)
之前初始化它们时,问题就解决了。
您也可以自行处理配置更改,在活动配置中设置以下语句,即在AndroidManifest中:
android:configChanges="orientation|keyboardHidden"
如需更多信息,您可以查看官方文档
我刚遇到了这个问题,读了所有的内容后,仍然没有帮助。以下是帮助我的方法。
MainActivity.cs
类中添加属性MainLauncher = true
。