首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活动在onCreate之后调用onCreate

活动在onCreate之后调用onCreate
EN

Stack Overflow用户
提问于 2020-06-30 19:45:04
回答 1查看 165关注 0票数 0

我有3项活动:入职活动、登录活动和第3次活动。当用户第一次打开我的应用程序时,它将在登录活动之后进入登录板,并要求使用firebase与google登录。当用户这样做时,它将启动第三个活动并完成旧的活动,如下所示:

代码语言:javascript
复制
val intent = Intent(baseContext, SkyActivity::class.java)
startActivity(intent)
finish()

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

代码语言:javascript
复制
override fun onPause() {
    super.onPause()
    if (backgroundSongService.isPlaying()) {
        backgroundSongService.pauseMusic()
    }
}

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

代码语言:javascript
复制
lateinit property backgroundSongService has not been initialized

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

OnboardingActivity会这样称呼第三个活动:

代码语言:javascript
复制
if (firebaseUser != null) {
    val intent = Intent(baseContext, SkyActivity::class.java)
    startActivity(intent)
    finish()
} 

就像我的IntentLoginActivity里面一样。但区别在于,这一次,onPause不会在第三次活动中被调用。为什么它只在LoginActivity之后才被调用

EN

回答 1

Stack Overflow用户

发布于 2020-06-30 21:00:57

快速解决您的崩溃问题

在使用背景服务之前验证它是否为空。

代码语言:javascript
复制
override fun onPause() {
    super.onPause()
    if (backgroundSongService!=null && backgroundSongService.isPlaying()) {
        backgroundSongService.pauseMusic()
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62665100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档