问题标签 [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 和 Activity 生命周期
因此,我正在研究将回调接口更改为本地广播以进行一些长期运行的网络操作的可行性。由于 Activity 生命周期为需要修改 UI 的异步请求创建了各种复杂性(将 Activity 从回调中断开onDestroy()
,不要修改FragmentTransaction
s afteronSaveInstanceState()
等),我认为使用本地广播更有意义,我们可以在生命周期事件中注册/注销接收器。
但是,当 Activity 在配置更改期间被销毁并重新创建时,广播接收器将不会被注册(onPause()/onResume()
例如介于两者之间)。因此,例如,如果我们在onCreate()
if中启动一个异步请求savedInstanceState == null
(例如,对于 Activity 的第一次启动),如果用户在操作完成之前更改其设备方向,完成时发送的广播是否会丢失? ? (即接收者在onPause()中注销,然后操作完成,然后接收者在onResume()中重新注册)
如果是这种情况,那么它会增加很多额外的复杂性,我们需要添加对它的支持,而且可能不值得切换。我研究了其他东西,例如 Otto EventBus 库,但我不确定它是否有同样的问题需要担心。
android - 未收到 LocalBroadcastManager 广播
我已经尝试了许多类似问题的不同答案的示例,但没有任何效果。当我按下后退按钮时,我在日志中收到“广播消息”,但没有“收到广播”。为什么?
android - 为什么 LocalBroadcastManager.getInstance(Context context) 需要 context 作为参数?
如果我能够像这样注册接收器:
并像这样发送广播:
为什么甚至需要 getInstance 的上下文?如果我只能说它new Activity()
仍然有效,那有什么意义呢?
android - Android localbroadcast 导致应用程序崩溃
我们在本地广播方面遇到了问题。出于某种原因,在 2 个机器人(我自己的手机 + 老板的手机)中它工作正常。在另一部手机(像我的老板一样的银河 s3 mini)和老板的平板电脑上,它却崩溃了。如果 tmp.sendBroadcast 命令是但不是马上程序崩溃(之后它仍然会有点)。但是它永远不会到达接收器。
我已经注册了这样的接收器:
接收器是这样的:
我试图寻找可能是这样的某种原因。认为它可能是 putExtra 的参数太长,但即使将其修剪为两个字符串(一个在代码中看到,一个只是来自服务器的日期,如“2014-03-28 12:20:02”等,所以现在有不应该有超过一些硬编码限制的危险。
有什么建议么?不喜欢任何我想出的笨拙的解决方法。
android - 奥托与本地广播:
我是开源贡献 Square 对 Android 社区所做的贡献的忠实粉丝,并且正在研究他们的最新贡献 Otto(事件总线)
深入挖掘,我发现 Otto 使用反射并且没有有序广播(未使用的消息从一个接收器传递到下一个接收相同类型事件的接收器的模式) Otto 相信更多的是“一劳永逸”模型。
现在 androidLocalBroadcastManager
在它的 v4 支持库中有 (LBM) 用于同样的目的,虽然它更笨重并且对传递的对象有更多的限制。但从好的方面来说,它确实支持有序广播,并且更类似于正常广播。
Otto 和 LBM 都在同一个进程空间内,所以就速度而言,我猜两者都是一样的。我能看到的唯一真正区别是 Otto 允许您定义自定义事件,并且您不必序列化/打包 Objects 。
因此,我真正的问题是,如果 LBM 做同样的事情,你什么时候会使用 Otto。
参考 :
http://nick.perfectedz.com/otto-event-system/
https://plus.google.com/107049228697365395345/posts/6j4ANWngCUY
android - BroadcastReceiver 未显示来自 onReceive 的任何日志
我的服务有功能
并且MainActivity
有
并且Manifest
有
此代码未更新TextView tvMessage
。
日志:
仅显示有关这些功能的此日志。不显示来自 的任何日志onReceive
。
我的包裹名称是com.myandroid.app
服务名称是AppService
活动名称是MainActivity
android - 在 AndroidManifest.xml 中注册一个本地广播接收器?
无论如何要在 AndroidManifest.xml 中注册一个 BroadcastReceiver 并接收由 LocalBroadcastManager 发送的广播吗?
目前我必须打电话
要注册接收器,在 AndroidManifest.xml 中声明将不起作用。但这意味着我必须确切地知道接收者的包名和类名,而不仅仅是意图过滤器。是否可以在清单文件中声明接收者?
以下是我当前的代码。
AndroidManifest.xml:
MainActivity.java:
消息接收器.java
android - 来自 NetworkChangeReceiver 的广播未通过
我已经实现了一个NetworkChangeReceiver
看起来像这样的:
在我的活动中,我还添加了一个广播接收器:
AndroidManifest.xml
由于未知的原因,活动上的 onReceive 方法没有被调用。知道为什么会这样吗?也许是因为日志记录方法中使用了不同的上下文?如果我使用简单的 toast,它就会通过,并且如果我在服务中使用相同的日志记录方法,我可以将服务本身用作上下文。
android - 如何在课堂和活动之间进行交流?
我有一个类可以加载多个声音来创建音效库。我使用 soundPool 的 setOnLoadCompleteListener 来监听正在加载的每个声音。在加载每个声音时,我会计算声音,当它们全部加载时,我想将其传达给主 Activity,以便它可以进入下一步。
问题 如何使用本地广播管理器描述了如何在活动之间进行广播非常好。但是,由于我只想在一个类和包含它的活动之间进行广播,所以在这种情况下使用 LocalBroadcastManager 是不是有点矫枉过正?
android - LocalBroadcastManager 中的 NullPointerException
短信到达后,我尝试更新我的列表。我得到正确的接收器,但是当我尝试将接收器发送到我的班级时,我在某些手机中收到以下错误。
我的代码在某些手机中正常工作。
我已使用以下代码发送广播:
我在以下代码中得到接收器:
我已经使用以下代码在 onResume 和 onPause 中注册和注销了我的接收器:
我在 SO 中进行了很多搜索,但找不到有效的解决方案。
在此先感谢您的时间
如果您想查看我的代码的任何部分,请询问我。
NormalIncommingTextService.NOTIFICATION
与filtering
我的代码相同。
// 编辑
这是第 297 行 @LocalBroadcastManager
有关grepcode的更多信息,但我不知道有什么问题。更新一个片段数据时在课堂上发生此错误FragmentActivity
,我在 Activity 上对其进行了测试并且工作正常
PS:在某些手机上更新数据没有任何问题FragmentActivity
//回答
我已经解决了这个问题,使用普通BroadCastReceiver
而不是LocalBroadcastManager