【问题标题】:Xamarin Forms Start/Sleep/Resume not being called when using MVVMCross.Forms使用 MVVMCross.Forms 时未调用 Xamarin Forms Start/Sleep/Resume
【发布时间】:2016-05-10 14:23:55
【问题描述】:

我们有一个基于 Xamarin.Forms 的项目,使用 MVVMCross-Forms。

我在 MvxIosSetup 上使用这样的代码:

    protected override IMvxIosViewPresenter CreatePresenter()
    {
        Forms.Init();

        var mvxFormsApp = new MvxFormsApp();

        mvxFormsApp.Start += (s, e) => { StartMessage.Publish(); };
        mvxFormsApp.Sleep += (s, e) => { SleepMessage.Publish(); };
        mvxFormsApp.Resume += (s, e) => { ResumeMessage.Publish(); };

        return new MvxFormsIosPagePresenter(Window, mvxFormsApp);
    }

但是那些事件句柄永远不会被调用,我有类似的 UWP 代码也不起作用。只有 Droid 可以正常工作。

我到处寻找工作样本,但到目前为止没有与此事件相关的内容。

【问题讨论】:

    标签: mvvmcross xamarin.forms


    【解决方案1】:

    在 2.1.0 中修复了一个已知问题,即不为 ​​UWP、WinRT 或 WP8 调用 OnStart / OnResume。

    如果 MVVMCross 与这些事件挂钩,那么这就是它不起作用的原因。升级到预发布版本以测试它是否解决了您的问题,或者这里是否还有其他问题。

    【讨论】:

    • 忘了补充,我已经在使用预发布版,v2.1.0.6508-pre3。
    • 我唯一能想到的就是你没有尽快附加事件。查看 MvxFormsApp 文件(我假设您使用的是包中包含的文件,然后它将传递事件)。 github.com/MvvmCross/MvvmCross-Forms/blob/master/…
    • 同意,但即便如此,我会失去 Start 的,但不应该失去 Sleep/Resume 的(这是我真正感兴趣的)。
    • 如果您实际复制代码并将其包含在您的应用程序中,那么 OnStart、OnResume 的工作是否有效?我看不到 Mvx 有任何问题,因此试图查看它是否是 XF 的问题。我对 Mvx 不太熟悉,但您在哪里调用 LoadApplication? MvxFormsIosPagePresenter 不这样做。我假设它在哪里调用 CreatePresenter 并且它将应用程序从新的 Presenter 中取出?
    • 复制代码不起作用,因为对 MVX 的依赖不允许这样做。 LoadApplication 因平台而异,但在我使用的 3 上通常是这样的:var presenter = Mvx.Resolve<IMvxViewPresenter>() as MvxFormsWindowsUWPPagePresenter;LoadApplication(presenter.MvxFormsApp);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多