【问题标题】:Lifecycle of fragments when user "quits"用户“退出”时的片段生命周期
【发布时间】:2013-08-28 18:53:47
【问题描述】:

我有一个主要活动是显示/隐藏一堆片段。一开始就有一个登录活动让用户登录。当用户按下主页或多任务按钮时,应用程序应该启动一个计时器,该计时器(在计时器用完后)自动将用户注销。这可能是当用户返回应用程序时(并且计时器已用完 -> 注销)或在应用程序中并且什么也没做。

就片段的生活方式而言,当用户按下主页/多任务按钮时,究竟会调用什么?在我的快速测试中,似乎每次都调用片段管理器的 onPause 中的第一个片段,无论用户退出时屏幕上的片段是什么。

我该怎么办?

【问题讨论】:

  • 在您的 onPause 状态下保存,例如,您的应用程序 SharedPreferences 中的当前时间。在您的 onResume 方法中,将 onPause 中保存的时间与当前时间进行比较并采取相应措施。

标签: android android-fragments activity-lifecycle fragment-lifecycle


【解决方案1】:

请看一下这个关于片段生命周期的教程

http://developer.android.com/reference/android/app/Fragment.html#Lifecycle

它解释了 Fragment 关于其 Activity 的生命周期。

当用户按下 home-button 例如:

onPause() - 片段不再与用户交互,因为它的 Activity 正在暂停,或者片段操作正在 Activity 中修改它。

【讨论】:

  • 但是为什么无论在主页按下时屏幕上显示的是哪个片段,都会调用同一个片段的 onPause() 呢?
  • “同一个片段”是什么意思?
  • 我有一个片段管理器,它正在管理我的交易。每次用户单击按钮或任何需要新屏幕的区域时,当前片段被隐藏并添加另一个片段(如果已经在片段管理器中,则显示)。通过相同的片段,我的意思是无论我是否在另一个我转换到的屏幕上,都会调用管理器中的第一个片段的相同 onPause
  • @John Baum - 所有 Fragments 都绑定到一个 Activity,因此当持有它们的 Activity 不可见时,Activity 中的所有 Fragment 都会调用其 onPause() 方法。
  • 哦,我想我意识到了我的错误,我只记录了第一个片段的 onPause。在这种情况下,在第一个片段的 onPause 上设置一个计时器并在 onResume 中进行比较就足够了吗?如果时间大于我的超时时间,撕掉所有碎片并再次显示登录?听起来对吗?
【解决方案2】:

片段生命周期中调用的方法与活动的相同。您可以在此处检查调用的完整方法集: Fragments

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2021-01-11
    相关资源
    最近更新 更多