0

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

4

1 回答 1

0

您可以在 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 如果它涵盖了所有情况,但我在我的项目中使用它,并且在我测试过的场景中它就像一个魅力

HIH

于 2018-03-16T13:22:02.153 回答