我有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之后才被调用
发布于 2020-06-30 21:00:57
快速解决您的崩溃问题
在使用背景服务之前验证它是否为空。
override fun onPause() {
super.onPause()
if (backgroundSongService!=null && backgroundSongService.isPlaying()) {
backgroundSongService.pauseMusic()
}
}https://stackoverflow.com/questions/62665100
复制相似问题