【发布时间】:2016-05-03 22:02:19
【问题描述】:
我有一个IntentService,它的工作很长,大约需要 15 分钟才能完成。这是从我的服务器获取新数据的同步过程。
此服务启动时,我也启动一个活动,以显示进度。
此活动创建一个BroadcastReceiver,它拦截从服务发送的有关进程进度的消息。
如果我让应用程序继续工作,一段时间后 SO 会关闭屏幕。
当我再次打开屏幕时,大约 15 分钟后,服务已经完成,但进度似乎已过时。 BroadcastReceiver 已停止工作,而我的 END OF SYNCHRONIZATION 消息尚未被 Activity 接收。
问题在于,在此消息中,我再次启动主要活动以让用户再次使用该应用程序。
我该如何解决这个问题?
【问题讨论】:
-
发布一些代码...我猜您的活动没有收到消息,因为您的接收器未注册 onPause 或 onDestroy,但很难说,因为没有代码。我建议使用 serviceBinding 和 Messengers 而不是收听广播接收器,并在您的活动绑定时发送状态消息,以获取最新状态......但同样,代码会有所帮助。
-
@AdamW 广播在 onStart 和 onStop 方法中注册和注销。
标签: android android-service android-broadcast android-broadcastreceiver