iphone - 每次用户启动/停止应用程序时如何采取行动,无论他们正在进行什么 Activity

标签 iphone android ios service

我正在将最初在 iOS 上开发的应用程序移植到 Android。我正在努力实现以下目标:

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

所谓的Manager类与Internet上的服务器握手,每次用户进入和离开应用程序时都需要进行各种簿记 Activity 。

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

1) Activity类:Activity( View )每次创建、停止、恢复的方法
2) 应用类:每次应用启动或终止时的onStart和onDestroy
3) 创建后台任务的服务机制,可用于在应用程序处于 Activity 状态或什至处于非 Activity 状态时在后台执行长期运行

以上都与我在 iOS 中的习惯不符。选项 1 将要求应用程序 View 层次结构中的每个 Activity 都具有在应用程序启动/停止/恢复时运行的代码。在这 3 个中,我觉得选项 3 更相关。我只是不完全清楚如何在用户启动/停止/恢复应用程序时启动/停止 Android 服务,而不考虑他们当时正在进行的具体 Activity 。

我非常感谢 Android 开发者或同时在 iOS 和 Android 上工作的开发者的意见。

最佳答案

The so-called Manager class handshakes with a server on the Internet and needs to do a variety of book-keeping activities every time the user the user enters and leaves the app.

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

2) Application class: onStart and onDestroy for every time the app is started or killed

请注意,该方法是 onTerminate(),而不是 onDestroy(),而且它实际上永远不会被调用。 Application 对象在进程运行时创建并一直存在,直到进程完全终止。

Its just not entirely clear how I could start/stop a service in Android as the user starts/stops/resumes an app without regard to the specific activity they're on at the time.

您可能会选择使用服务来进行“握手”——事实上,这很有可能。

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

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

关于iphone - 每次用户启动/停止应用程序时如何采取行动,无论他们正在进行什么 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615383/

相关文章:

iphone - 使用 ActionScript 3 的触摸事件与鼠标单击事件

Android:使用 TextView.setText() 为字符串的一部分着色?

android - 使用适用于 Android 的 phonegap 插件打印图像

ios - 我可以获得已安装的 iOS 应用程序的 UUID 吗?

ios - 从触摸方法构建您自己的手势识别器?

iphone - 动态更改单元格高度时 UITableView 的不自然 SCSS

iphone - 将 Three20 与另一个库一起使用并且链接标志冲突

iphone - XCode 5 在 AppStore 验证时崩溃

java - 广播接收器为零且 Oreo + 设备无法工作

iphone - 在 iPhone 应用程序中强制纵向布局 - 坏主意?