活动在创建后调用停止



我有 3 个活动:入职活动、登录活动和第三个活动。当用户第一次打开我的应用时,它会在登录活动后进入入门状态,并要求使用 Firebase 登录谷歌。当用户这样做时,它将启动第 3 个活动并完成旧活动,如下所示:

val intent = Intent(baseContext, SkyActivity::class.java)
startActivity(intent)
finish()

但是每次用户登录并启动3rd activity时,都会调用onPause()。它使应用程序崩溃,因为我的onPause()停止了我的背景歌曲:

override fun onPause() {
super.onPause()
if (backgroundSongService.isPlaying()) {
backgroundSongService.pauseMusic()
}
}

此时,我的backgroundSongService仍然null(我调用了一个函数在我的onCreate中初始化它(。所以我得到错误:

lateinit property backgroundSongService has not been initialized

但这仅在用户登录时发生。如果他在登录后关闭应用程序并再次打开,他仍将登录。 因此,活动流程将是:OnboardingActivity->3rdActivity

载入活动将像这样调用第三个活动:

if (firebaseUser != null) {
val intent = Intent(baseContext, SkyActivity::class.java)
startActivity(intent)
finish()
} 

就像我在LoginActivity里的Intent一样.但不同的是,这一次,onPause不会在第 3 个活动中被调用。为什么只在LoginActivity之后才叫它?

快速解决崩溃问题

在使用后台服务之前,请验证它是否为空

override fun onPause() {
super.onPause()
if (backgroundSongService!=null && backgroundSongService.isPlaying()) {
backgroundSongService.pauseMusic()
}
}

最新更新