收到GCM消息时开始下载任务

时间:2016-03-11 23:55:43

标签: android multithreading android-service

设备收到GCM消息后,我希望我的应用与我的服务器联系以刷新其内容并下载新项目。我目前有GcmListenerService接收我的GCM消息。如何在新线程上启动下载,并确保在下载完成之前我的服务尚未完成?我已经有一个自定义助手类,我在后台线程上启动我的下载,通常在我的应用程序打开时运行。我想重用这个帮助程序类来从GcmListenerService启动下载。在下载完成之前,如何告诉我的GcmListenerService没有完成?

另外,我想确保如果我的应用程序在下载操作期间打开,我可以从我的主要活动中搜索下载完成(因此我想使用我的下载帮助程序类)。

1 个答案:

答案 0 :(得分:2)

您不能告诉GcmListenerService无法完成。 GcmListenerService中的onMessageReceived()不应该被阻止很长时间。

最好的选择是启动您自己的服务,例如来自onMessageReceived()的IntentService,然后当它获取新数据时,您可以向您的应用程序发送订单广播,如果它正在运行,它将接收它,然后它可以获取新数据,如果您的应用程序没有运行,那就是它没有处理广播,您可以启动您的应用程序。