4

我正在将我在 Xamarin.iOS 中编写的应用程序重写为 Xamarin.Forms,并且我曾经在 DidEnterBackground 和 WillEnterForeground 上执行一些代码。现在我在 Xamarin.Forms 中找不到等效的方法。我在我的 App 类中尝试过 mainPage.Appearing 和 mainPage.Disappearing,但它们似乎与我想要实现的不同。任何人?

4

1 回答 1

4

我不相信 Xamarin.Forms 中还有该功能。您可以安装 Xamarin.Forms.Labs(在 NuGet 上可用)并从 XFormsApplicationDelegate 继承您的应用委托。您可以查看GitHub 源代码上的示例应用程序委托。

public partial class AppDelegate : XFormsApplicationDelegate
{

然后,您需要使用 DI 容器注册 IXFormsApp 接口:

    private void SetIoc()
    {
        var resolverContainer = new SimpleContainer();

        var app = new XFormsAppiOS();
        app.Init(this);

        resolverContainer.Register<IXFormsApp>(app);

        Resolver.SetResolver(resolverContainer.GetResolver());
    }

一旦应用程序在 DI 容器上注册,您将通过解析器在共享/PCL 代码上使用它。您将订阅 Resumed 和 Suspended 事件。 样品在这里。

        var app = Resolver.Resolve<IXFormsApp>();
        if (app == null)
        {
            return;
        }

        app.Closing += (o, e) => Debug.WriteLine("Application Closing");
        app.Error += (o, e) => Debug.WriteLine("Application Error");
        app.Initialize += (o, e) => Debug.WriteLine("Application Initialized");
        app.Resumed += (o, e) => Debug.WriteLine("Application Resumed");
        app.Rotation += (o, e) => Debug.WriteLine("Application Rotated");
        app.Startup += (o, e) => Debug.WriteLine("Application Startup");
        app.Suspended += (o, e) => Debug.WriteLine("Application Suspended");
于 2014-07-05T22:55:17.927 回答