我的Android 4+应用程序已连接到用于每隔几分钟同步一次数据的自定义Web服务。为了确保在线数据始终处于最新状态,我希望在应用程序关闭/发送到后台时触发同步。如何在Android应用程序关闭/设置为背景时执行后台任务?
在iOS版,这是很容易的:
- 听
applicationDidEnterBackground:
在AppDelegate中 - 使用
beginBackgroundTaskWithName:
开始您长时间运行的后台任务,并避免在任务仍在运行
如何做到这一点在Android?
第一个问题是,没有什么等于applicationDidEnterBackground:
。我迄今发现的所有解决方案均建议使用主要活动onPause()
方法。然而,这被称为任何时候主Activity
暂停,这也是在应用程序内启动另一个Activity
时的情况。从ActivityLifecycleCallbacks
接口的onActivityPaused()
方法是正确的。
那么,如何检测到应用程序(而不仅仅是一个Activity
)已关闭或发送到后台?
第二个问题是,我没有找到任何有关如何运行后台任务的信息。所有解决方案都指向简单地开始AsyncTask
,但这真的是一个正确的解决方案吗?
AsyncTask
将开始一个新的任务,但这个任务也运行,当应用程序被关闭/无效?我需要做些什么来防止应用程序和任务在几秒钟后被暂停?在应用程序完全暂停之前,如何确定该任务可以完成?
您可以使用该服务 –
您是否考虑过服务? – apmartin1991
使用服务https://developer.android.com/reference/android/app/Service.html –