Как работать с IActivityLifecycleCallbacks с MVVMCross?

Я новичок в MVVMCross. Мне нужно получить подробную информацию о том, работает ли мое приложение для Android в фоновом режиме или нет. Чтобы достичь этого, я пытаюсь реализовать с IActivityLifecycleCallbacks с MVXApplication. Но я получаю следующее сообщение об ошибке "реализует Android.Runtime.IJavaObject, но не наследует Java.Lang.Object или Java.Lang.Throwable. Это не поддерживается". Так кто-нибудь может подсказать мне, как выполнить мое требование с MVVM кросс.

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, если он охватывает все случаи, но я использую его в своих проектах, и это работает как очарование в сценариях, которые я тестировал

Е.И.В.

Другие вопросы по тегам