gpt4 book ai didi

android - 为什么 Android 应用程序在一次启动时启动 3 次?

转载 作者:行者123 更新时间:2023-12-04 14:46:58 34 4
gpt4 key购买 nike

我从模板创建了一个应用程序,并填充了一些日志,如下所示

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MainApplication.something++
Log.d("Tracking", "onCreate ${MainApplication.something} ${Thread.currentThread()}")
setContentView(R.layout.activity_main)
}

override fun onStart() {
super.onStart()
Log.d("Tracking", "onStart")
}

override fun onResume() {
super.onResume()
Log.d("Tracking", "onResume")
}

override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
Log.d("Tracking", "onConfigurationChanged")
}

override fun onPause() {
super.onPause()
Log.d("Tracking", "onPause")
}

override fun onStop() {
super.onStop()
Log.d("Tracking", "onStop")
}

override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
Log.d("Tracking", "onSaveInstanceState")
}

override fun onDestroy() {
super.onDestroy()
Log.d("Tracking", "onDestroy")
}
}

class MainApplication: Application() {
companion object {
var something = 0
}

override fun onCreate() {
super.onCreate()
Log.d("Tracking", "Application onCreate $something ${Thread.currentThread()}")
}
}

当我运行它时,我注意到它有时会启动 3 次。 (有时,它会启动 2 次,有时会启动 1 次)。

日志如下

2021-11-04 23:55:31.409 7810-7810/com.example.empty D/Tracking: Application onCreate 0 Thread[main,5,main]
2021-11-04 23:55:31.445 7810-7810/com.example.empty D/Tracking: onCreate 1 Thread[main,5,main]
2021-11-04 23:55:31.409 7810-7810/com.example.empty D/Tracking: Application onCreate 0 Thread[main,5,main]
2021-11-04 23:55:31.445 7810-7810/com.example.empty D/Tracking: onCreate 1 Thread[main,5,main]
2021-11-04 23:55:31.508 7810-7810/com.example.empty D/Tracking: onStart
2021-11-04 23:55:31.445 7810-7810/com.example.empty D/Tracking: onCreate 1 Thread[main,5,main]
2021-11-04 23:55:31.509 7810-7810/com.example.empty D/Tracking: onResume
2021-11-04 23:55:31.508 7810-7810/com.example.empty D/Tracking: onStart
2021-11-04 23:55:31.509 7810-7810/com.example.empty D/Tracking: onResume
2021-11-04 23:55:31.509 7810-7810/com.example.empty D/Tracking: onResume

最初,我以为是 Activity 启动了 3 次,但是当我在 onCreate 注销应用程序时,它也启动了 3 次。我明确地放置了一个静态变量 something,并且清楚地看到应用程序是 3 个不同的实例(因为变量在这 3 次中没有递增)。

为了确认这不是因为配置更改或 Activity 被终止(如 https://stackoverflow.com/a/3588750/3286489 中所述),我还在 onPause、onStop、onSavedInstanceState 和 onDestroy 时注销,它们都没有被调用。

有谁知道为什么应用程序只启动一次却启动了 3 次?

注意:我在 Android SDK 31 和 30,以及 Emulator API S 和 API 29 上编译,它们都具有相同的行为。还在真机上试过 Android 8.0.显示相同的行为。

更新 我注意到它只发生在第二次编译之后。可能只是重复的未清除Log(虽然我已经清除了)。

最佳答案

显然,这是一个 Android Studio 过滤问题。我在那里使用 Tracking 来过滤日志。并显示多个相同类型的日志。

当我从日志中删除一个字符时,过滤器就会得到纠正。放回角色后,滤镜还是可以的。

请参阅下面的 GIF。

enter image description here

关于android - 为什么 Android 应用程序在一次启动时启动 3 次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69839732/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com