几天前,我读到有一种更好的机制可以在单个应用程序中发送广播 - LocalBroadcastManager
.
它运作良好(就像标准广播一样..)。但是,昨天我发现它无法向清单中定义的接收器发送广播(当我暂时将其切换为使用标准 Activity 的sendBroadcast
方法时,它起作用了)。
我想要这个的原因(如果有更喜欢的方法,请纠正我)是:
假设我想下载一个文件。我将使用服务,因为这就是 Android 希望我们做的事情。好的,现在我想在我的活动中显示(并定期更新)它的进度。所以服务将向我的活动发送广播,并且活动必须注册才能接收它们。处理广播的首选方法是在 中注册onResume()
和注销onPause()
。现在让我们假设用户对缓慢移动的进度条感到厌烦,所以他按下 Home 并去做其他事情。后来他回来想看看下载的当前状态,但我怎么能告诉他,当我从广播中注销时,他离开我的应用程序的那一秒?
这就是为什么我使用清单中定义的接收器,随时准备接收广播并将其永久存储(共享首选项,数据库......),因此活动可以在它变得可见时重建最新的广播。
但是现在我不确定是否不推荐此例程,或者为什么LocalBroadcastManager
不允许我这样做。