【发布时间】:2016-09-15 09:26:53
【问题描述】:
我的 Android 4+ 应用已连接到自定义网络服务,该服务用于每隔几分钟同步一次数据。为了确保在线数据始终是最新的,我想在应用关闭/发送到后台时触发同步。
在 iOS 下这很容易:
- 在 AppDelegate 中收听
applicationDidEnterBackground: - 使用
beginBackgroundTaskWithName:启动长时间运行的后台任务,避免在任务仍在运行时被挂起
如何在 Android 上执行此操作?
第一个问题是,没有任何东西相当于applicationDidEnterBackground:。到目前为止,我发现的所有解决方案都建议使用主要活动 onPause() 方法。然而,这会在主Activity 暂停时调用,在应用程序中启动另一个Activity 时也是如此。 ActivityLifecycleCallbacks 接口中的 onActivityPaused() 方法也是如此。
那么,如何检测app(不仅仅是Activity)是关闭还是发送到后台?
第二个问题是,我没有找到任何关于如何运行后台任务的信息。所有解决方案都指向简单地启动AsyncTask,但这真的是正确的解决方案吗?
AsyncTask 将启动一个新任务,但是当应用程序关闭/非活动时,此任务也会运行吗?我该怎么做才能防止应用程序和任务在几秒钟后暂停?如何确保在应用完全挂起之前任务可以完成?
【问题讨论】:
-
您可以为此使用服务
-
你考虑过服务吗?
-
感谢您对服务的提示。我会检查一下。为什么投反对票?如果问题有问题,请告诉我,以便我改进。没有任何评论的否决票不是很有帮助。
标签: android android-asynctask background-process android-lifecycle