【问题标题】:Android onBackPressed/onUserLeaveHintAndroid onBackPressed/onUserLeaveHint
【发布时间】:2011-07-07 14:17:07
【问题描述】:

真的需要一点建议。我有一个 Activity 与我的游戏一起运行,当用户按下后退按钮时,它将使用 onBackPressed() 方法退出到主菜单,但我也会覆盖 onUserLeaveHint() 以执行相同的操作,如果 Home按下按钮或接到电话。但是,当按下 Back 按钮时也会调用此方法,这意味着 Main Menu Intent 会被调用两次,一个在另一个之上。

如果有人知道如何解决此问题或处理这两个事件的更好方法,将不胜感激。

谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    onUserLeaveHint() 与活动的其他生命周期方法一样是受保护的方法,如果您正在处理 onUserLeaveHint 这将处理以下情况

    1. 当用户点击主页键时
    2. 当用户点击返回键时
    3. 当用户点击信号栏时

    基本上,它暗示用户试图离开您的活动。这意味着,如果您正在处理 onUserLeaveHint(),则无需在代码中处理 onBackPressed()

    【讨论】:

    • 当返回键被按下时,它不会被调用。它会在点击 Home 键或从该 Activity 中启动某个 Activity 时被调用。
    • 有时在开始新的活动时也会调用
    • onUserLeaveHint 仅在按下主页按钮时调用,onbackpressed 在按下返回按钮时调用
    【解决方案2】:

    只是一个可能对您有所帮助的想法,我将它用于我的“自制”ActionBar,以确定用户在退出之前何时实际到达主要(也是最后一个)活动。我手动启动 Main-Activity 并通过设置 FLAG_ACTIVITY_CLEAR_TOP 标志清除整个活动堆栈,因此如果用户现在再次点击后退按钮,应用程序将关闭。

    Intent intent = new Intent(getContext(), MainMenu.class).
    setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    

    【讨论】:

    • 如果我启动了两次相同的活动,从显示堆栈中删除最后一个活动是否安全?
    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 2021-11-14
    • 2011-04-03
    相关资源
    最近更新 更多