我有 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()
}
}