我在应用程序中使用onPause((方法,这样当应用程序暂停时,用户就可以在我的聊天中"离线"。我发现它很有用。
但问题是,每次用户在活动之间导航时,该方法都会被调用一毫秒。这样,用户在活动A中是"在线"的,在活动B中是"联机"的,但在两者之间是"脱机"的。
因为我用绿点来描述在线用户,这很烦人,因为它每次都会变成灰色,然后又变成绿色。
有办法防止这种情况发生吗?
onPause
是活动生命周期的一部分,它与Activity
所经历的不同状态有关——这与您的应用程序是否作为一个整体处于后台无关。以下是文档对它的看法
系统调用此方法作为用户正在离开您的活动(尽管这并不总是意味着活动正在被破坏(;它指示该活动不再在前景中(尽管如果用户处于多窗口模式,它可能仍然可见(。
有几种方法可以处理它-最简单的方法是在切换到活动B时设置navigating
标志。然后onPause
可以检查该标志,如果正在进行导航,则跳过将您设置为脱机。
我假设你的意思是,对于其他用户来说,这个点正在闪烁(因为如果你在活动之间切换,你就不会看到同一个View
(-实际上,让应用程序发出一个";我在网上"无论如何,每隔一段时间ping一次。
这样,如果用户在一定时间后没有收到消息,他们可以将其设置为离线-这只是意味着,如果用户崩溃、网络中断或其他什么情况,他们不会因为没有发送"消息"而一直在线;我现在离线了"通过onPause
的消息