Android 上的页面生命周期事件

对于使用 AppCompat 的应用程序,此 Android 平台特定功能用于在应用程序暂停和恢复时分别禁用 DisappearingAppearing 页面事件。 此外,假设软键盘的操作模式设置为 WindowSoftInputModeAdjust.Resize,则它还能够控制在恢复时是否显示软键盘(如果在暂停时显示了软键盘)。

注意

请注意,默认情况下会启用这些事件,以保持依赖于这些事件的应用程序的现有行为。 禁用这些事件会使 AppCompat 事件周期与 AppCompat 前的事件周期匹配。

通过将 Application.SendDisappearingEventOnPauseApplication.SendAppearingEventOnResumeApplication.ShouldPreserveKeyboardOnResume 附加属性设置为 boolean 值,可以在 XAML 中使用此平台特定功能:

<Application ...
             xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"             xmlns:androidAppCompat="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific.AppCompat;assembly=Xamarin.Forms.Core"
             android:Application.WindowSoftInputModeAdjust="Resize"
             androidAppCompat:Application.SendDisappearingEventOnPause="false"
             androidAppCompat:Application.SendAppearingEventOnResume="false"
             androidAppCompat:Application.ShouldPreserveKeyboardOnResume="true">
  ...
</Application>

或者,可以使用 Fluent API 从 C# 使用它:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific.AppCompat;
...

Xamarin.Forms.Application.Current.On<Android>()
     .UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize)
     .SendDisappearingEventOnPause(false)
     .SendAppearingEventOnResume(false)
     .ShouldPreserveKeyboardOnResume(true);

Application.Current.On<Android> 方法指定此平台特定仅在 Android 上运行。 当应用程序进入后台时,Xamarin.Forms.PlatformConfiguration.AndroidSpecific.AppCompat 命名空间中的 Application.SendDisappearingEventOnPause 方法用于启用或禁用 Disappearing 页面事件的触发。 当应用程序从后台恢复时,Application.SendAppearingEventOnResume 方法用于启用或禁用 Appearing 页面事件的触发。 假设软键盘的操作模式设置为 WindowSoftInputModeAdjust.Resize,则 Application.ShouldPreserveKeyboardOnResume 方法用于控制在恢复时是否显示软键盘(如果在暂停时显示了软键盘)。

结果是,在应用程序暂停和恢复时不会分别触发 DisappearingAppearing 页面事件,并且如果在应用程序暂停时显示了软键盘,则在应用程序恢复时也会显示它:

平台专属生命周期事件