Android 上的页面生命周期事件
对于使用 AppCompat 的应用程序,此 Android 平台特定功能用于在应用程序暂停和恢复时分别禁用 Disappearing
和 Appearing
页面事件。 此外,假设软键盘的操作模式设置为 WindowSoftInputModeAdjust.Resize
,则它还能够控制在恢复时是否显示软键盘(如果在暂停时显示了软键盘)。
注意
请注意,默认情况下会启用这些事件,以保持依赖于这些事件的应用程序的现有行为。 禁用这些事件会使 AppCompat 事件周期与 AppCompat 前的事件周期匹配。
通过将 Application.SendDisappearingEventOnPause
、Application.SendAppearingEventOnResume
和 Application.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
方法用于控制在恢复时是否显示软键盘(如果在暂停时显示了软键盘)。
结果是,在应用程序暂停和恢复时不会分别触发 Disappearing
和 Appearing
页面事件,并且如果在应用程序暂停时显示了软键盘,则在应用程序恢复时也会显示它: