kotlin - onPause() 方法在活动之间被调用
问题描述
我在我的应用程序中使用 onPause() 方法,以便在应用程序暂停时用户在我的聊天中变为“离线”。我发现它非常有用。
但问题是,每次用户在活动之间导航时,都会调用该方法,就像毫秒一样。这样,用户在活动 A 中“在线”,在 B 中“在线”,但在两者之间“离线”。
因为我用一个绿点来描述在线用户,所以很烦人,因为它每次都会变成灰色然后又变成绿色。
有没有办法防止这种情况?
解决方案
onPause
是Activity 生命周期的一部分,它与所经历的不同状态Activity
有关 - 这与您的应用程序作为一个整体是否在后台无关。这是文档所说的
系统调用此方法作为用户离开您的活动的第一个指示(尽管它并不总是意味着活动正在被销毁);它表明活动不再在前台(尽管如果用户处于多窗口模式,它可能仍然可见)。
有几种方法可以处理它 - 最简单的方法是navigating
在切换到活动 B 时设置一个标志。然后onPause
可以检查该标志,如果导航仍在进行,则跳过将您设置为离线。
我假设您的意思是该点正在为其他用户闪烁(因为如果您是在活动之间切换的人,您将不会看到相同View
的内容) - 实际上让应用程序发送一个“无论如何,我在线”经常ping。
这样,如果他们在一定时间后没有收到消息,他们可以将用户设置为离线 - 这只是意味着如果用户崩溃,他们的网络中断或其他什么,他们不会一直在线只是因为他们没有通过onPause
推荐阅读
- deep-learning - 使用从磁盘加载的 CNN 模型进行预测后出错
- asp.net-core - JWT 令牌在 asp.net core 3.1 中强制过期
- ionic-framework - Ionic React:如何集成自定义字体和图标集
- amazon-web-services - Amazon Cognito 用户池 - 使用“用户名”属性存储自定义用户 ID
- excel - 具有表头过滤值的单元格验证列表
- email - (中间值).sendEmail(...).promise 不是函数
- flutter - 如何在 Wrap Widget 中换行
- javascript - 如何使用 React Router Dom 在 ReactJS 上正确路由页面
- c# - 使用带有 .AddClientAccessTokenHandler() 扩展名的 HttpClient 时,不包括角色声明
- configuration - Ansible Inventory 多行库存数组?