使用暗模式时,Android Activity 会被实例化两次

sha*_*ooo 6 android android-lifecycle android-activity android-darkmode

我的启动器活动,即 MainActivity 在使用时被实例化了两次, AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) 这导致了两次网络调用并做出了奇怪的行为。

有没有可以控制这个并只初始化一次的?我试过使用 launchMode = "singleTop" 和 "singleInstance"

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
    mRequestQueue = Volley.newRequestQueue(this)
    Log.e(TAG,"Skillet")
    loadStateData()
    initializeListeners()
}
Run Code Online (Sandbox Code Playgroud)

sha*_*ooo 8

在尝试了我的一些实践后找到了解决方案

override fun onCreate(savedInstanceState: Bundle?) {
    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    }
Run Code Online (Sandbox Code Playgroud)

在 onCreate() 的 super 之前调用暗模式函数

它将阻止两次实例化活动