【问题标题】:Android onRestart for whole App?整个应用程序的Android onRestart?
【发布时间】:2013-07-07 13:30:58
【问题描述】:

在 Android 上,我试图捕捉我的应用从后台返回到前台的事件。换句话说,该应用程序处于活动状态,然后用户将其最小化(通过单击主页按钮或启动另一个应用程序或其他方式),然后用户再次运行该应用程序。

我可以将 onRestart() 方法添加到活动中,如下所示:

@Override
public void onRestart() {
    super.onRestart();

    Log.d("MAIN", "onRestart called.");
}

但这仅适用于当用户最小化应用时该特定活动是活动的活动。

有没有办法以某种方式为整个应用程序捕获这个?或者我需要在我拥有的每一个活动中添加 onRestart 吗? (我想我可以创建一个所有其他活动都基于的超类)。

谢谢!

【问题讨论】:

    标签: android background restart foreground background-foreground


    【解决方案1】:

    我认为你需要的方法是 void onResume()

    这里有活动的android开发者页面,检查页面的“实现生命周期回调”部分。
    http://developer.android.com/guide/components/activities.html

    希望这会有所帮助。

    【讨论】:

    • 感谢您的帮助。我在相关问题上看到了该链接(和活动生命周期)。在发布这个问题之前我确实尝试过 onResume() ,但它也是以活动为中心的,也没有成功。编辑:每次显示该视图时都会调用 onResume,这不是预期的效果。
    【解决方案2】:

    有没有办法以某种方式为整个应用捕获这个?

    不,因为没有应用“重启”的概念。

    或者我需要在我拥有的每一个活动中添加 onRestart 吗?

    大概。或者,找到一种方法来避免需要“捕捉 [您的] 应用从后台返回到前台的事件”。

    【讨论】:

    • 感谢您的确认!
    • 我想要它的原因是检查服务器上的用户会话是否已过期,这适用于整个应用程序。我将在其他视图中添加相同的检查。
    • @NicoteWinkel:恕我直言,您基于时间“检查用户会话是否已在服务器上过期”,而不是应用程序是否处于前台、后台、侧面、地下或地上.
    • 感谢@CommonsWare,这是有道理的。我们的案例有点独特——“会话”更多的是一个活跃的用户帐户,用户不经常使用该应用程序。我们注意到用户没有退出应用程序,因此他们会将其最小化数天或数周,然后再次将其置于前台。我认为如果我只处理主要观点,它应该足够好。
    猜你喜欢
    • 2019-12-05
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多