我有3个活动:入职活动,登录活动和第3个活动。当用户首次打开我的应用程序时,它将在登录活动后进入注册状态,并要求使用Firebase与google登录。当用户执行此操作时,它将启动第三个活动并完成旧的活动,如下所示:
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
OnboardingActivity将像这样调用第三个活动:
if (firebaseUser != null) {
val intent = Intent(baseContext, SkyActivity::class.java)
startActivity(intent)
finish()
}
就像我的Intent
中的LoginActivity
。但是不同之处在于,这次,onPause
将不会在第三个活动中被调用。为什么只在LoginActivity
之后才调用它?
答案 0 :(得分:0)
快速解决崩溃问题
在使用后台服务之前,先验证该服务是否为空
override fun onPause() {
super.onPause()
if (backgroundSongService!=null && backgroundSongService.isPlaying()) {
backgroundSongService.pauseMusic()
}
}