首页 > 解决方案 > onPause() 方法在活动之间被调用

问题描述

我在我的应用程序中使用 onPause() 方法,以便在应用程序暂停时用户在我的聊天中变为“离线”。我发现它非常有用。

但问题是,每次用户在活动之间导航时,都会调用该方法,就像毫秒一样。这样,用户在活动 A 中“在线”,在 B 中“在线”,但在两者之间“离线”。

因为我用一个绿点来描述在线用户,所以很烦人,因为它每次都会变成灰色然后又变成绿色。

有没有办法防止这种情况?

标签: kotlinonpause

解决方案


onPauseActivity 生命周期的一部分,它与所经历的不同状态Activity有关 - 这与您的应用程序作为一个整体是否在后台无关。这是文档所说的

系统调用此方法作为用户离开您的活动的第一个指示(尽管它并不总是意味着活动正在被销毁);它表明活动不再在前台(尽管如果用户处于多窗口模式,它可能仍然可见)。

有几种方法可以处理它 - 最简单的方法是navigating在切换到活动 B 时设置一个标志。然后onPause可以检查该标志,如果导航仍在进行,则跳过将您设置为离线。


我假设您的意思是该点正在为其他用户闪烁(因为如果您是在活动之间切换的人,您将不会看到相同View的内容) - 实际上让应用程序发送一个“无论如何,我在线”经常ping。

这样,如果他们在一定时间后没有收到消息,他们可以将用户设置为离线 - 这只是意味着如果用户崩溃,他们的网络中断或其他什么,他们不会一直在线只是因为他们没有通过onPause


推荐阅读