如何在 MVVMCross Xamarin.iOS 中计算 App Idle Time?

How to calculate App Idle Time in MVVMCross Xamarin.iOS?

我正在使用 MVVMCross 在 Xamarin.iOS 中开发 iOS 通用应用程序。我想计算 App Idle 时间我找到了以下有用的帮助

iOS:Convert ObjC code to C#, How to know the time app has been idle

但是当我尝试将它与 MVVMCross 一起使用时出现了一个问题,那就是 MvvmCross中的AppDelegate.cs继承自MvxApplicationDelegate.cs

我无法覆盖 AppDelegate 中的以下事件,因为它没有覆盖 UIApplication

public override void SendEvent (UIEvent uievent)
    {
        base.SendEvent (uievent);
        var allTouches = uievent.AllTouches;
        if (allTouches.Count > 0) {
            var phase = ((UITouch)allTouches.AnyObject).Phase;
            if (phase == UITouchPhase.Began || phase == UITouchPhase.Ended)
                ResetIdleTimer ();
        }
    }

你离答案很近了。

在默认的 MvvMCross 项目中,有一个 Main.cs,其中包含一个 Application class.

您只需将下一行中的 null 替换为您的 UIApplication 的子 class 名称

UIApplication.Main(args, null, "AppDelegate");

例如,如果您的 class 名称是从 UIApplication 继承的 MyApplication,那么它应该像

UIApplication.Main(args, "MyApplication", "AppDelegate");

并添加一个 class MyApplication

[Register("MyApplication")]
public class MyApplication : UIApplication
{
    public override void SendEvent(UIEvent uievent)
    {
        base.SendEvent(uievent);
        var allTouches = uievent.AllTouches;
        if (allTouches.Count > 0)
        {
            var phase = ((UITouch)allTouches.AnyObject).Phase;
            if (phase == UITouchPhase.Began || phase == UITouchPhase.Ended)
                ResetIdleTimer();
        }
    }
}