WhenActivated 在 App.OnSleep 之后调用但在 App.Resume 之后未调用
WhenActivated called after App.OnSleep and not called after App.Resume
我正在使用 ReactiveUI 开发 Xamarin Forms 应用程序,我注意到 Android.
上有一些奇怪的行为
第一页有一个 View 和 ViewModel 并且都实现了 WhenActivated
。
如果我启动应用程序并在显示 (XamarinForms) 第一页之前按主页按钮将应用程序发送到后台,那么我将有此函数调用顺序。 (如果在 phone 屏幕锁定时从调试模式从 VS 启动应用程序,则更容易重现)。
App.OnStart
- 好的
App.OnSleep
- 好的
FirstPageViewModel.WhenActivated
- 奇怪。为什么在 OnSleep
之后?
FirstPageView.WhenActivated
- 奇怪。为什么在 OnSleep
之后?
如果我恢复应用程序(第一页可见)
App.Resume
- 好的
- 没有调用
WhenActivated
- 奇怪,但由于第 3 点和第 4 点
如果我将应用程序发送到后台并再次恢复它,一切都如预期的那样。
App.OnSleep
- 好的
App.Resume
- 好的
FirstPageViewModel.WhenActivated
- 好的
FirstPageView.WhenActivated
- 好的
这是设计使然吗?
并不是说 View Activation 中没有继承问题,但我认为这可能是正确的。
如果您正在启动您的应用程序,应用程序启动序列将会触发。然后应用程序会意识到它在启动序列后立即休眠。应用程序从睡眠状态恢复后,它会激活视图,因为它必须立即进入睡眠状态(我不确定这是真实世界的场景,屏幕锁定时如何启动应用程序?)
在 XF 中恢复应用程序时,只要 OS 没有垃圾回收,视图就已经激活。所以我希望视图重新激活。 View Activation 不是关于屏幕何时可见,而是实例化 ViewModel 或 View 之后的步骤。所以一般都是响应"ViewAppearing"和"View Disappearing"事件。
此外,iOS 和 Android 处理 "View Activation" 的方式不同。可能值得一读 Android Activity Lifecycle。您会注意到 activity 在被呈现后保持活动状态,直到被用户关闭或被 OS 收集。
我认为这不是关于 ReactiveUI 如何处理视图激活,而是更多关于 XF 如何在它支持的各种平台上抽象视图激活。
综上所述,是的,这是设计使然。
我正在使用 ReactiveUI 开发 Xamarin Forms 应用程序,我注意到 Android.
上有一些奇怪的行为第一页有一个 View 和 ViewModel 并且都实现了 WhenActivated
。
如果我启动应用程序并在显示 (XamarinForms) 第一页之前按主页按钮将应用程序发送到后台,那么我将有此函数调用顺序。 (如果在 phone 屏幕锁定时从调试模式从 VS 启动应用程序,则更容易重现)。
App.OnStart
- 好的App.OnSleep
- 好的FirstPageViewModel.WhenActivated
- 奇怪。为什么在OnSleep
之后?FirstPageView.WhenActivated
- 奇怪。为什么在OnSleep
之后?
如果我恢复应用程序(第一页可见)
App.Resume
- 好的- 没有调用
WhenActivated
- 奇怪,但由于第 3 点和第 4 点
如果我将应用程序发送到后台并再次恢复它,一切都如预期的那样。
App.OnSleep
- 好的App.Resume
- 好的FirstPageViewModel.WhenActivated
- 好的FirstPageView.WhenActivated
- 好的
这是设计使然吗?
并不是说 View Activation 中没有继承问题,但我认为这可能是正确的。
如果您正在启动您的应用程序,应用程序启动序列将会触发。然后应用程序会意识到它在启动序列后立即休眠。应用程序从睡眠状态恢复后,它会激活视图,因为它必须立即进入睡眠状态(我不确定这是真实世界的场景,屏幕锁定时如何启动应用程序?)
在 XF 中恢复应用程序时,只要 OS 没有垃圾回收,视图就已经激活。所以我希望视图重新激活。 View Activation 不是关于屏幕何时可见,而是实例化 ViewModel 或 View 之后的步骤。所以一般都是响应"ViewAppearing"和"View Disappearing"事件。
此外,iOS 和 Android 处理 "View Activation" 的方式不同。可能值得一读 Android Activity Lifecycle。您会注意到 activity 在被呈现后保持活动状态,直到被用户关闭或被 OS 收集。
我认为这不是关于 ReactiveUI 如何处理视图激活,而是更多关于 XF 如何在它支持的各种平台上抽象视图激活。
综上所述,是的,这是设计使然。