活动在onCreate

时间:2020-06-30 19:45:04

标签: android android-studio kotlin android-intent android-activity

我有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之后才调用它?

1 个答案:

答案 0 :(得分:0)

快速解决崩溃问题

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

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