【问题标题】:Logout User when App gets killed应用程序被杀死时注销用户
【发布时间】:2016-03-18 20:48:27
【问题描述】:

当用户登录时,一个值对被添加到 SharedPreference。 当应用程序被杀死时,我希望用户退出,下次启动时需要再次登录。 如果用户从一个活动切换到另一个活动并再次回到主活动,他将被注销。

问题是 MainActivity 中的 onStop 被调用并取消设置 SharedPreference 中的条目。 我希望在活动之间切换时保留该条目,但在应用退出/终止时取消设置。

【问题讨论】:

    标签: android


    【解决方案1】:

    试试onDestroy(),而不是onStop()onStop()在activity不可见时调用,onDestroy()在activity即将被销毁时调用。

    【讨论】:

    • 请注意根据您的Activity 的设置进行轮换,因为它可以调用onDestory() 并创建一个新的Activity。可能要考虑android:configChanges="orientation"
    • 我不明白,为什么 onDestroy 不像 onStop 那样被立即调用
    • 当使用设备上的后退箭头关闭应用程序时,onDestroy 会立即被调用,但是当您查看所有打开的应用程序并滑动关闭时,它不会被调用
    • 也许你应该考虑看看这个答案(关于主页按钮)退出应用程序:stackoverflow.com/questions/6388351/…
    【解决方案2】:

    我发现的唯一有保证的方法是创建一个实现 Application.ActivityLifecycleCallbacks 的类。实施必要的方法来保存已启动、停止、恢复和销毁的活动的计数器。

    实现类后,您可以像这样在 Application 类实现中注册您的实现:

    registerActivityLifecycleCallbacks(new MyLifecycleHandler());
    

    当启动的活动数量等于销毁活动的数量时,您可以调用您的方法来注销用户。或者只保留一个计数器并在活动开始时将其递增,并在它们被销毁后递减 - 相同的区别。

    您可以使用相同的策略来判断您的应用是否在前台。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 2013-09-19
      相关资源
      最近更新 更多