提问人:mohammad.hasan.mahdavi81 提问时间:10/28/2023 更新时间:10/28/2023 访问量:32
为什么 Fragment 的 onCreate 仅在通过 Android Studio 安装后首次启动时才会被多次调用?
Why Fragment's onCreate is called multiple times only for the first launch after install via Android Studio?
问:
当我通过Android Studio在手机上安装我的应用程序时,我遇到了一个奇怪的问题。
我的 MainActivity 中有一个 SplashFragment,它是我的nav_graph的起始目标。在MainActivity中,我有一个包含nav_graph的NavHostFragment。
我的 SplashFragment 似乎启动了 2 次导致崩溃,因为 SplashFragment 在几秒钟后使用 NavController 的导航功能将用户重定向到另一个片段。
有趣的是,这只发生在安装后的第一次,并且只有在我通过 Android Studio 安装应用程序时才会发生。也就是说,当我制作apk文件并将其安装在手机上或已经在手机上安装了该应用程序时,它不会发生。
我尝试了这段代码来记录我的 SplashFragment 的 onCreate 被调用了多少次:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val backStackEntries = findNavController().currentBackStack.value
logger(backStackEntries.last().id, "UNKNOWN")
logger(backStackEntries.map { it.destination.displayName }, "UNKNOWN")
logger(++splashViewModel.count, "UNKNOWN")
}
然后我看到了这个日志:
堆栈上只有一个 SplashScreen 实例,但不知何故,onCreate 方法被多次调用。
我再次指出,这仅在安装后第一次发生,并且仅在我通过Android Studio安装应用程序时发生。
答: 暂无答案
评论