【问题标题】:Message when Android App is closedAndroid 应用程序关闭时的消息
【发布时间】:2014-01-29 16:00:05
【问题描述】:

我正在将 iOS 应用程序移植到 Android,并且在终端上遇到了一点困难。 我希望应用程序在启动/进入前台(即用户选择应用程序)和应用程序进入后台时(例如,当进入主屏幕并开始使用另一个应用程序时)进行同步。

在 Android 中有没有一种简单的方法可以做到这一点? 我将 onResume() 和 onPause() 添加到我的活动中,但这将在活动恢复或暂停时触发,而不是在整个应用程序暂停时触发(并且每次用户执行某些操作时都会导致大量同步)。

更新: 同步操作是一个服务,当应用程序需要从服务器获取新的/更新的信息时调用它。因此,这需要在用户启动/恢复应用程序时完成(在不活动一段时间后),并且当用户主动停止使用应用程序时需要这样做。

【问题讨论】:

  • 恕我直言,您问的问题不正确。您应该解释您的“同步”过程是什么,然后询问此类操作的正确时机。
  • 我只是想在这个问题上支持 CommonsWare - 你所说的同步是什么意思?此外,如果您因为长时间运行的操作(这是我在问题的第二部分中听到的)而导致 UI 冻结,您可能需要澄清这一点,以便我们解决它。
  • 新增的更新更清晰了?

标签: android android-activity


【解决方案1】:

当一个活动进入后台时,

onPause() -> onStop()

方法会按顺序执行,如果activity是部分可见的,只有onPause(),如果activity完全不被其他activity看,onStop()方法会在onPause()之后执行。

onDestroy()

如果你调用了finish()或者当系统中没有足够的内存并且系统销毁它时,方法将被执行。除非您调用 finish() 方法,否则您不能依赖 onDestroy() 方法。

最好使用onStop()方法保存数据。

【讨论】:

  • 但是有什么东西可以在“整个应用程序”的级别上起作用,所以我只在应用程序完全关闭时触发一个事件,而不是在从一个活动导航到另一个活动时触发。
  • 这里有 2 个选项,要么为每个活动覆盖 onStop(),要么创建一个基 Activity 类,您的其他活动将扩展它。最后,您将确保您的方法将被执行。
【解决方案2】:

nr4bt 有一个有效点,根据您所需的功能,这是一个不错的选择。

一种全局方法是在您的应用程序启动时启动Service。

  • 使此Service 负责您的同步操作,并对您的活动Activity 进行适当的回调。

  • 让这个Service 知道你的活动/暂停/停止Activity。最后一个完成后 -> 进行最后的同步并终止 Service

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多