c# - Xamarin.iOS 的应用程序生命周期

标签 c# ios xamarin xna monogame

我正在使用 MonoGame 和 VisualStudio for Mac 将 XNA 游戏移植到 iOS。在原始源代码中,我使用 PhoneApplicationService 来管理应用程序生命周期:

PhoneApplicationService.Current.Launching += OnGameLaunching;
PhoneApplicationService.Current.Closing += OnGameClosing;
PhoneApplicationService.Current.Deactivated += OnGameDeactivated;
PhoneApplicationService.Current.Activated += OnGameActivated;

我在从 Microsoft.Xna.Framework.Game 派生的类中使用了 PhoneApplicationService,以便我可以通过游戏循环内的事件来管理生命周期。

要将游戏移植到 iOS,我知道我需要使用 UIKit 并提供一个像这样的 AppDelegate (下面的代码来自 Xamarin 示例):

[Register("AppDelegate")]
class Program : UIApplicationDelegate
{
    private static Game1 game;

    static void Main(string[] args)
    {
        UIApplication.Main(args, null, "AppDelegate");
    }

    public override void FinishedLaunching(UIApplication app)
    {
        game = new Game1();
        game.Run(); // does not return until the game doesn't end
    }

    public override void OnResignActivation(UIApplication application)
    { 
        // pause the stopwatch
        ...
    }

    public override void OnActivated(UIApplication application)
    { 
        // resume the stopwatch
        ...
    }
}

在上面的代码中,Microsoft.Xna.Framework.Game.Run()FinishedLaunching() 中调用,并且仅在游戏实际结束时返回。话虽这么说,我想知道当应用程序进入后台状态或移回事件状态时, OnResignActivation()OnActivated() 是否仍然被调用,分别。

最佳答案

我创建了一个小型测试应用,并确认即使 game.Run() 也会调用 OnResignActivation()OnActivated() code> 直到游戏结束才返回。

关于c# - Xamarin.iOS 的应用程序生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55450210/

相关文章:

c# - 使用 ObservableCollection 实现模态

android - Android 中的 UIView 等价物

c# - Telerik RadWindow 和 Response.Redirect - JavaScript 错误

c# - 为什么这种扩展方法不起作用?

ios - 如何在 ios 中检索不同类型的日期

ios - 使用自动布局的 XIB 中的 UIView 始终为 600x600

android - Mono.Linker.MarkException : Error processing method: 'System. 无效 AndroidX.RecyclerView.Widget.RecyclerView/LayoutManager

c# - 使用 C# 编写 VirtualBox 脚本

C# DataGridView Checkbox 勾选事件

ios - TableViewCell scroll 滚动时选择了错误的单元格