问题标签 [localbroadcastmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - LocalBroadcastManager 接收器顺序
LocalBroadcastManager是否保证注册接收者的调用顺序?
指望他们总是按照注册的顺序被调用会很方便。API文档似乎没有说,但也许我错过了一些东西。
android - 为什么清单中定义的接收器在与 LocalBroadcastManager 一起使用时不接收广播?
几天前,我读到有一种更好的机制可以在单个应用程序中发送广播 - LocalBroadcastManager
.
它运作良好(就像标准广播一样..)。但是,昨天我发现它无法向清单中定义的接收器发送广播(当我暂时将其切换为使用标准 Activity 的sendBroadcast
方法时,它起作用了)。
我想要这个的原因(如果有更喜欢的方法,请纠正我)是:
假设我想下载一个文件。我将使用服务,因为这就是 Android 希望我们做的事情。好的,现在我想在我的活动中显示(并定期更新)它的进度。所以服务将向我的活动发送广播,并且活动必须注册才能接收它们。处理广播的首选方法是在 中注册onResume()
和注销onPause()
。现在让我们假设用户对缓慢移动的进度条感到厌烦,所以他按下 Home 并去做其他事情。后来他回来想看看下载的当前状态,但我怎么能告诉他,当我从广播中注销时,他离开我的应用程序的那一秒?
这就是为什么我使用清单中定义的接收器,随时准备接收广播并将其永久存储(共享首选项,数据库......),因此活动可以在它变得可见时重建最新的广播。
但是现在我不确定是否不推荐此例程,或者为什么LocalBroadcastManager
不允许我这样做。
android - Navigation Drawer 计数器设置为 LocalBroadcastReceiver 但未更新?
感谢您花时间阅读我的问题。我有一个应用程序,其中我的应用程序有一个导航抽屉以及图标、标题和计数器。我没有足够的声誉来添加图片抱歉。这是一个带有示例的链接。
我将计数器设置为实际上是一个广播接收器,一旦触发特定事件,它将显示更新的计数。触发事件的流程如下:
- a
Fragment
开始了。 - 一旦片段启动,它就会调用一个方法,该方法将这个类名插入一个名为 history 的表中(这个表历史记录将用于检索类名并创建该类的新活动)。
- 在同一个片段中,有一种方法可以将本地广播事件发送到接收器,这只是历史表的计数。计数是通过读取数据库并检索计数并将值存储到字符串中的方法完成的。然后它将值发送到接收器,接收器将使用API中的
getExtraString()
方法获取该值。LocalBroadcastManager
- 单击后退按钮后,您将返回主屏幕。
- 现在您单击滑块菜单图标以打开导航抽屉,“历史记录”选项卡的计数仍为 0。
为什么它没有根据收到的广播事件更新?
这是将项目添加到 navdrawer 和除广播接收器之外的计数器的代码。
现在这里是注册广播接收器的代码。
这里是存储本地广播发送者发送的值的接收者。
这是getHistoryCount()
您在上面的代码中看到的方法。这只是读取HISTORY表的计数。
这是处理插入数据库和向本地广播接收器发送事件的片段类。
这是上述方法中的方法定义,它甚至将广播发送到本地广播接收器。这是在与上面具有 onActivityCreated() 方法的代码相同的类中定义的。
android - LocalBroadcastManager 执行顺序
我试图了解如何BroadcastReceivers
在 Android 上工作。sendBroadcast
我的问题是,在我调用aLocalBroadcastManager
到我收到它的时间之间会有延迟BroadcastReceiver
吗?通话会同步吗?
例如,调用 时myFunction
,输出将是21
or 12
??
如果正在运行的函数更改为
myFunction
会在接收者之前调用所有其他调用的函数吗?
android - 使用 LocalBroadcastManager 注册的 BroacastReceiver 的 onReceive() 在哪个线程上运行?
我在偏好活动中注册了一个广播接收器,并从(Wakeful)IntentService 向它发送(同步)广播。显然 onReceive 在服务的线程上运行。这是我的错吗?它是记录在案的行为吗?
偏好活动:
意图服务(位置监视器):
异常(E/AndroidRuntime):
在模拟器 API 17 上
android - 使用 PendingIntent 进行全局广播或本地广播
我在 IntentService 中运行后台任务。我在通知栏中显示进度(使用 NotificationManager),如果有人单击该通知,我想取消任务。
我通过广播服务成功实现了它。但是,我在想是否可以对 localBroadcast 做同样的事情。
如果我将“registerReceiver”更改为“LocalBroadcastManager.getInstance(this).registerReceiver”,则代码不起作用。你能告诉我为什么我不能将本地广播与pendingintent一起使用吗?
谢谢,
目前我的代码代表:
android - 向后 BroadcastReceiver 发送者
我的广播接收器和发送器在这里搞砸了一些东西。也许另一双眼睛会很有用。
我有我的光传感器,它应该广播接收活动的变化。
这是 LightSensor.java
然后我的 Record.java 应该接收这些对 lux 的更新:
我认为这只是发送和接收 id 的问题,但我并不完全确定。一旦 Record 活动接收到广播,它应该更新 TextView tvSensorLightLux 或至少 Log.d 来自 LightSensor.java 的 Lux 值
android - 本地广播空指针异常
我在 intentService 中有一个本地广播,它向活动发送消息。问题是出现空指针异常。任何帮助表示赞赏:)
LogCat 错误
接收者等级(活动)
发件人类(服务)
android - LocalBroadcastManager 是否按照发送事件的顺序传递事件?
我有一个活动 A 和一个服务 S。他们通过 LocalBroadcastManager 上下班。
如果 S 用两个消息 M1 和 M2 依次调用 sendBroadcast 两次,A 会在 M2 之前得到 M1 吗?
谢谢,
android - 如何将处理程序传递给 LocalBroadcastManager.registerReceiver(...)
Android 提供了一个registerReceiver()
带有签名的全局变量,该签名需要一个Handler
. 使用时LocalBroadcastManager.registerReceiver()
,没有采用Handler
. 为什么?如何提供Handler
将处理广播的内容?