首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在每次用户启动/停止应用程序时采取行动,而不管他们在做什么活动

如何在每次用户启动/停止应用程序时采取行动,而不管他们在做什么活动
EN

Stack Overflow用户
提问于 2011-04-10 23:19:05
回答 2查看 200关注 0票数 1

我正在将一个最初在iOS上开发的应用程序移植到安卓系统上。我正在努力做到以下几点:

每次启动应用程序时,每次用户离开应用程序时都调用Manager类()方法

  • ,每次用户返回应用程序(从空闲恢复)时调用同一Manager类
  • 上的stop()方法,在Manager类

上调用start()方法

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

尽管iOS允许您对UIAppDelegate类进行子类化,并在应用程序启动、结束或从空闲状态恢复时运行代码,但安卓似乎没有一种类似的方法。相反,这些是Android的选择:

1)活动类:每次创建、停止或恢复活动(视图)时的方法

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

3)创建后台任务的服务机制,可用于在应用程序活动或不活动时在后台执行长寿命操作。

上面没有一个能很好地与我在iOS中习惯的东西保持一致。选项1将要求应用程序视图层次结构中的每个活动都有在应用程序启动/停止/恢复时运行的代码。在第三个选项中,我觉得选项3更有意义。我只是不完全清楚,当用户启动/停止/恢复应用程序时,如何在Android中启动/停止服务,而不考虑他们当时正在进行的特定活动。

我很感谢安卓开发者或同时在iOS和安卓上工作的开发人员的投入。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-10 23:49:54

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

这可能是iOS上一个有效的设计模式--我不知道。这不是一个有效的Android设计模式。你不会在Android上“离开应用程序”,就像你在Web应用程序中“离开应用程序”一样。“离开”在Android和Web应用程序中都被确定为“你有一段时间没回来了”。

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

注意,该方法是onTerminate(),而不是onDestroy(),它实际上从未被调用过。Application对象是在进程存在和存在时创建的,直到进程被彻底终止为止。

只是不完全清楚当用户启动/停止/恢复应用程序时,如何在Android中启动/停止服务,而不考虑他们当时正在进行的特定活动。

你可以选择使用一种服务来进行“握手”--事实上,这可能是很有可能的。

然而,没有任何内置的“离开应用程序”。我强烈建议你们完全摆脱这个概念。

如果没有,欢迎您安装一个在每个onPause()onResume()上都有通知的服务,进行簿记以查看是否有任何活动活动,如果有X段时间没有这样做,您的“离开应用程序”逻辑,然后关闭。如果服务是在OS请求下关闭的,而不是您自己的关闭请求,则还会触发onDestroy()中的“离开应用程序”逻辑。这并不是100%保证工作--用户可以强制-停止您的服务,而操作系统可以不受惩罚地杀死进程。

票数 1
EN

Stack Overflow用户

发布于 2011-04-11 00:43:51

如果要避免在所有活动中重复代码,为什么不使用公共代码拥有一个活动子类,并拥有其他的活动子类呢?

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

希望这能帮上忙

菲尔·莱洛

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5615383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档