【问题标题】:How to work with IActivityLifecycleCallbacks with MVVMCross?如何通过 MVVMCross 使用 IActivityLifecycleCallbacks?
【发布时间】:2018-08-25 13:15:31
【问题描述】:

我是 MVVMCross 的新手。我需要获取有关我的 android 应用程序是否在后台运行的详细信息。为了实现这一点,我尝试使用带有 MVXApplication 的 IActivityLifecycleCallbacks 来实现。但我收到以下错误“实现 Android.Runtime.IJavaObject 但不继承 Java.Lang.Object 或 Java.Lang.Throwable。不支持。”。那么任何人都可以建议我如何使用 MVVM cross 来实现我的要求。

【问题讨论】:

    标签: xamarin xamarin.android mvvmcross activity-lifecycle background-application


    【解决方案1】:

    您可以在您的 Android 项目的主应用程序中实现该接口,并在OnTrimMemory 上将级别与TrimMemory.UiHidden 进行比较,您可以知道应用程序是否在后台。

    public class MainApplication : Application, Application.IActivityLifecycleCallbacks
    {
        ...
    
        public static bool IsApplicationInForeground { get; private set; }
    
        public override void OnCreate()
        {
            base.OnCreate();
            this.RegisterActivityLifecycleCallbacks(this);
        }
    
        public override void OnTerminate()
        {
            base.OnTerminate();
            this.UnregisterActivityLifecycleCallbacks(this);
        }
    
        public virtual void OnActivityResumed(Activity activity)
        {
            IsApplicationInForeground = true;
        }
    
        public override void OnTrimMemory(TrimMemory level)
        {
            IsApplicationInForeground &= level != TrimMemory.UiHidden;
    
            base.OnTrimMemory(level);
        }
    
        ...
    }
    

    IDK 如果它涵盖了所有情况,但我在我的项目中使用它,它在我测试过的场景中就像一个魅力

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 2021-03-15
      • 2018-08-05
      相关资源
      最近更新 更多