Activity类的recreate()

2023-07-19  本文已影响0人  wenSome

recreate在Activity类的成员函数,用于重新创建当前Activity。
当调用recreate()时,系统会销毁当前的Activity实例并重新创建一个新的实例,然后重新调用onCreate()来重新初始化Activity

recreate()函数通常在需要重新加载Activity的情况下使用,例如应用黑夜白天模式发生更改时或者某些配置发生变化时。通过调用recreate(),可以使Activity重新应用新的配置,并且可以使界面上的各个组件重新初始化。

以下是一个示例代码,展示了如何使用recreate()函数:

    R.id.nav_night_mode -> {
        if (SettingUtil.getIsNightMode()) { // 获取PreferenceManager是否已开启夜间模式
            SettingUtil.setIsNightMode(false)// 设置为白天模式
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
        } else {
            SettingUtil.setIsNightMode(true)
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
        }
        window.setWindowAnimations(R.style.WindowAnimationFadeInOut)
        recreate()
    }
    
    override fun recreate() {
        ...(逻辑代码)
    }

在这个示例中,当点击按钮时,recreate()函数会被调用,从而销毁当前的Activity实例并创建一个新的实例。

需要注意的是,recreate()函数只能在Activity的主线程中调用,并且只需调用函数本身,无需传递任何参数。

上一篇 下一篇

猜你喜欢

热点阅读