【问题标题】: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 如果它涵盖了所有情况,但我在我的项目中使用它,它在我测试过的场景中就像一个魅力
嗨