Если OnAppearing в формах Xamarin является событием жизненного цикла, то почему люди добавляют в базу. OnAppearing? - PullRequest
0 голосов
/ 01 марта 2020

Я часто вижу это:

protected override void OnAppearing()
{
    base.OnAppearing();

Почему люди добавляют base.OnAppearing ()

Также:

protected override void OnStart()
{
    base.OnStart();

Нужно ли переопределять OnStart и это тоже похожее событие жизненного цикла?

1 Ответ

2 голосов
/ 01 марта 2020

OnAppearing - это виртуальный метод, определенный в Xamarin.Forms.Page классе

namespace Xamarin.Forms
{
    [RenderWith(typeof(_PageRenderer))]
    public class Page : VisualElement, ILayout, IPageController, IElementConfiguration<Page>, IPaddingElement
    {
        // ...
        protected virtual void OnAppearing()
        {
        }
        // ...
    }
}

, и также вызывается из базового класса

[EditorBrowsable(EditorBrowsableState.Never)]
public void SendAppearing()
{
    if (_hasAppeared)
        return;

    _hasAppeared = true;

    if (IsBusy)
    {
        if (IsPlatformEnabled)
            MessagingCenter.Send(this, BusySetSignalName, true);
        else
            _pendingActions.Add(() => MessagingCenter.Send(this, BusySetSignalName, true));
    }

    OnAppearing(); // <--- here
    Appearing?.Invoke(this, EventArgs.Empty);

    var pageContainer = this as IPageContainer<Page>;
    pageContainer?.CurrentPage?.SendAppearing();

    FindApplication(this)?.OnPageAppearing(this);
}

Очень часто вызывается базовый метод внутри переопределенного метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...