为了账号安全,请及时绑定邮箱和手机立即绑定

Xamarin Android 在应用程序打开时发送回登录信息

Xamarin Android 在应用程序打开时发送回登录信息

C#
肥皂起泡泡 2021-12-05 16:38:34
我有一个 xamarin android 应用程序,它有几个活动。每次用户打开应用程序时,他们都必须输入密码才能使用该应用程序,我们不坚持登录。客户端提出的一件事是,如果应用程序被最小化并再次打开它,则应将用户送回登录。我如何实现这一目标?据我所知,每个活动都有一个 OnResume 函数,但我不知道如何检测应用程序是否来自后台?由于这是一个 Xamarin Android 项目,因此是否也没有通用的 App.cs 类可以将其放入?我必须把它放在每个活动上吗?
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

您将需要实施,Android.Arch.Lifecycle因为它是处理整个应用程序进入后台并正确重新启动的唯一真正方法(有许多处理 Activity 生命周期方法的技巧,但该库是由 Google 编写的,以避免那些导致和支持的所有问题自 14(?) 以来的所有 API。


第一:将Xamarin.Android.Arch.Lifecycle.Extensionsnuget 包添加到您的应用程序。


第二:在你的项目中实现一个 Android Application 子类,添加一个IGenericLifecycleObserver并通过以下方式注册你的观察者ProcessLifecycleOwner:


注意:您也可以在 Activity 子类中实现这一点,然后将该子类用作所有其他 Activity 的基类(当然除了 Login 之外)。


例子:

[Application]

public class App : Application, IGenericLifecycleObserver

{

    public App(IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer) : base(javaReference, transfer) { }


    bool Stopped;

    public void OnStateChanged(ILifecycleOwner p0, Lifecycle.Event p1)

    {

        Stopped |= p1 == Lifecycle.Event.OnStop;

        if (p1 == Lifecycle.Event.OnStart && Stopped)

        {

            // app is coming back from being in the background, do something...


            Stopped = false; // reset 

        }

    }


    public override void OnCreate()

    {

        base.OnCreate();

        ProcessLifecycleOwner.Get().Lifecycle.AddObserver(this);

    }

}


查看完整回答
反对 回复 2021-12-05
  • 1 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信