每次用户启动/停止应用时如何采取行动,无论他们是否正在进行任何活动

时间:2011-04-10 23:19:05

标签: iphone android ios service

我正在将最初在iOS上开发的应用移植到Android。我正在努力完成以下任务:

  • 每次启动应用程序时,请在Manager类
  • 上调用start()方法
  • 每次用户离开应用时,请在同一个Manager类上调用stop()方法
  • 每次用户返回应用程序(从空闲状态恢复)时,请调用Manager类上的start()方法

所谓的经理类与互联网上的服务器握手,每次用户进入和离开应用程序的用户都需要进行各种簿记活动。

虽然iOS允许您子类化UIAppDelegate类并且具有在应用程序启动,结束或从空闲状态恢复时运行的代码,但似乎Android没有等效的方法。相反,这些是Android的选项:

1)活动类:每次创建,停止或恢复活动(视图)时的方法 2)应用程序类:每次启动或杀死应用程序时的onStart和onDestroy 3)用于创建后台任务的服务机制,该任务可用于在应用程序处于活动状态时甚至在其不活动时在后台执行长期生活操作

上述所有内容都与我在iOS中使用的内容完全吻合。选项1将要求应用程序视图层次结构中的每个Activity都具有在应用程序启动/停止/恢复时运行的代码。在3中,我感觉选项3更相关。我还不完全清楚如何启动/停止Android中的服务,因为用户启动/停止/恢复应用程序而不考虑当时的特定活动。

我希望Android开发人员或开发人员能够在iOS和Android上工作。

2 个答案:

答案 0 :(得分:1)

  

所谓的经理类与互联网上的服务器握手,每次用户进入和离开应用程序的用户都需要进行各种簿记活动。

这可能是iOS上有效的设计模式 - 我不知道。它不是Android上的有效设计模式。你不要在Android上“离开应用程序”,而不是“将应用程序”留在Web应用程序中。 “离开”主要由Android和Web应用程序中的“你没有回来”决定。

  

2)应用程序类:每次启动或终止应用程序时的onStart和onDestroy

请注意,该方法为onTerminate(),而不是onDestroy(),实际上它永远不会被调用。 <* 1}}对象是在流程过程中创建的,直到流程完全终止为止。

  

我不知道如何启动/停止Android中的服务,因为用户启动/停止/恢复应用程序而不考虑当时的特定活动。

您可能会选择使用服务进行“握手” - 事实上,这可能是可能的。

但是,“离开应用程序”没有任何内置功能。我强烈建议你完全摆脱这个概念。

如果没有,欢迎您安排每个ApplicationonPause()通知的服务,记账是否有任何现场活动,如果没有已经过了一段时间,你的“离开应用程序”逻辑,然后关闭。如果服务在OS请求与您自己的关闭请求关闭时,您还会在onResume()中触发“离开应用程序”逻辑。这并非100%保证可以正常工作 - 用户可以强制停止您的服务,操作系统可以扼杀这个过程而不受惩罚。

答案 1 :(得分:1)

如果您想避免在所有活动中复制代码,为什么不将1个子类的Activity与公共代码一起使用,并将其他活动子类包含在内?

您可以使用各种机制跟踪活动生命周期,包括在onPause / onResume中设置/清除SharedPreferences,或使用带引用计数的单例。

希望这有帮助,

Phil Lello