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