我正在将一个最初在iOS上开发的应用程序移植到安卓系统上。我正在努力做到以下几点:
每次启动应用程序时,每次用户离开应用程序时都调用Manager类()方法
上调用start()方法
所谓的Manager类与互联网上的服务器握手,每次用户进入和离开应用程序时都需要进行各种各样的记账活动。
尽管iOS允许您对UIAppDelegate类进行子类化,并在应用程序启动、结束或从空闲状态恢复时运行代码,但安卓似乎没有一种类似的方法。相反,这些是Android的选择:
1)活动类:每次创建、停止或恢复活动(视图)时的方法
2)应用程序类:每次应用程序启动或终止时都使用onStart和onDestroy
3)创建后台任务的服务机制,可用于在应用程序活动或不活动时在后台执行长寿命操作。
上面没有一个能很好地与我在iOS中习惯的东西保持一致。选项1将要求应用程序视图层次结构中的每个活动都有在应用程序启动/停止/恢复时运行的代码。在第三个选项中,我觉得选项3更有意义。我只是不完全清楚,当用户启动/停止/恢复应用程序时,如何在Android中启动/停止服务,而不考虑他们当时正在进行的特定活动。
我很感谢安卓开发者或同时在iOS和安卓上工作的开发人员的投入。
发布于 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%保证工作--用户可以强制-停止您的服务,而操作系统可以不受惩罚地杀死进程。
发布于 2011-04-11 00:43:51
如果要避免在所有活动中重复代码,为什么不使用公共代码拥有一个活动子类,并拥有其他的活动子类呢?
您可以使用多种机制跟踪活动生命周期,包括在onPause/onResume中设置/清除SharedPreferences,或者使用带有引用计数的单例。
希望这能帮上忙
菲尔·莱洛
https://stackoverflow.com/questions/5615383
复制相似问题