【发布时间】:2016-03-18 20:48:27
【问题描述】:
当用户登录时,一个值对被添加到 SharedPreference。 当应用程序被杀死时,我希望用户退出,下次启动时需要再次登录。 如果用户从一个活动切换到另一个活动并再次回到主活动,他将被注销。
问题是 MainActivity 中的 onStop 被调用并取消设置 SharedPreference 中的条目。 我希望在活动之间切换时保留该条目,但在应用退出/终止时取消设置。
【问题讨论】:
标签: android
当用户登录时,一个值对被添加到 SharedPreference。 当应用程序被杀死时,我希望用户退出,下次启动时需要再次登录。 如果用户从一个活动切换到另一个活动并再次回到主活动,他将被注销。
问题是 MainActivity 中的 onStop 被调用并取消设置 SharedPreference 中的条目。 我希望在活动之间切换时保留该条目,但在应用退出/终止时取消设置。
【问题讨论】:
标签: android
试试onDestroy(),而不是onStop()。 onStop()在activity不可见时调用,onDestroy()在activity即将被销毁时调用。
【讨论】:
Activity 的设置进行轮换,因为它可以调用onDestory() 并创建一个新的Activity。可能要考虑android:configChanges="orientation"
我发现的唯一有保证的方法是创建一个实现 Application.ActivityLifecycleCallbacks 的类。实施必要的方法来保存已启动、停止、恢复和销毁的活动的计数器。
实现类后,您可以像这样在 Application 类实现中注册您的实现:
registerActivityLifecycleCallbacks(new MyLifecycleHandler());
当启动的活动数量等于销毁活动的数量时,您可以调用您的方法来注销用户。或者只保留一个计数器并在活动开始时将其递增,并在它们被销毁后递减 - 相同的区别。
您可以使用相同的策略来判断您的应用是否在前台。
【讨论】: