问题标签 [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 - 从服务到片段的广播接收器无法正常工作
我已经实现了一个广播接收器,以每秒从运行 CountDownTimer 的服务传递数据,并将剩余时间传递给片段。
问题是 Fragment 没有正确接收数据,或者说只有当我按下某个搜索按钮、隐藏键盘或活动中的其他东西时才接收数据。
这是我的服务类:
这是我的片段,它应该接收数据并更新列表视图的项目。
在 onCreateView 我注册了一个接收器:
在 onResume 上做同样的事情:
在暂停时取消注册:
TimerStatesReceiver 类:
android - Android:如何在服务中拥有本地广播接收器
我有一个服务,我想要一个本地广播接收器。我想从活动中获得价值到我的服务 onCreate。
注意:我可以使用意图在 onStartCommand() 中从活动中获取一个值到我的服务。但在这里,我想从服务的 onCreate 中的活动中获得价值。
以下是我的服务文件:
以下是我的活动文件,我想在其中传递一个名为 musicpath 的值
运行后,它说音乐路径值为空。
怎么做?
android - Android:在非 UI 线程中动态注册我的接收器
我正在尝试优化我的 android 应用程序,并决定将我在方法中注册的所有接收器转移到在onStart
方法中启动的线程onStart
。这是代码:
我可以用这种方式注册我的接收器吗?
到目前为止,它似乎正在工作,但我不确定这是否只是运气,或者这是否可以保证始终有效。
android - Android Activity 与 IntentService 通信
我需要在我的活动和正在运行的 IntentService 之间进行双向通信。
场景是这样的:应用程序可以在运行时安排警报,启动一个从 Web 获取一些数据并处理它的 IntentService。IntentService 完成时可能出现三种情况:
应用处于焦点状态,这意味着当 IntentService 完成时,应用需要使用新数据刷新其视图。
应用程序关闭并在 IntentService 完成工作后打开,因此应用程序将可以访问处理后的数据
- 该应用程序在 IntentService 运行时打开,在这种情况下,我需要从活动中询问 IntentService 是否在后台执行某些操作。
对于 1. 我已经在我的活动中实现了一个 BroadcastReceiver,它注册到 LocalBroadcastManager。当 IntentService 完成工作时,发送一个广播并且活动做出反应。这工作正常
对于 2. 没有什么需要做的
对于 3. 我不知道该怎么办。到目前为止,我已经尝试过:
在活动中:
在 IntentService 中
我的实现的问题是,在 IntentService 中,BroadcastReceiver 不会触发 onReceive。有什么建议或者更简单的方式让 Activity 询问 IntentService 它在做什么?
LE:试图获得原子布尔值。服务中:
在 Activity 中,在服务运行时重新启动应用程序:
在 AndroidManifest 上
android - Activity 未收到来自 Service 的本地广播
我有一个Activity
我正在BroadcastReceiver
本地注册的一个,如下所示:
我有一个Service
广播Intent
如下:
这按预期工作。在实现了这个之后,我意识到本地广播更适合这种情况:
不幸的是,上述方案不起作用。每次都发送全局广播,而显然从未发送/接收本地广播。
我在这里想念什么?本地广播不能在两个不同的应用程序组件之间发送,比如两个单独Activity
的 s 或从 aService
到 aActivity
吗?我究竟做错了什么??
笔记:
根据文档,发送本地广播(范围仅限于应用程序自己的组件的应用程序内广播)而不是全局广播(传输到手机上的每个应用程序)只要我们不需要广播在应用程序之外传播。这就是进行上述更改的原因。
android - LocalBroadcastManager 和可能的安全相关问题
这是我计划做的事情:
我有我Activity
在其中注册的BroadcastReceiver
我有一个IntentService
从网络上获取数据并处理它的。在下载数据和处理完成期间,服务通过发送广播消息通知活动它正在做什么。下载数据和处理可能需要一段时间,具体取决于数据的大小。例如,最多可能需要 20 分钟。
IntentService
通过在服务中注册接收器,活动使用类似的方法向 发送消息onStartCommand
。
这是经过测试的并且工作正常。我已经阅读了有关 globalBroadcastManager
和LocalBroadcastManager的信息,并且我担心这种方法的安全性。请记住,我的需求与服务和活动之间的通信严格相关,这两种方式都主要使用可打包的对象。
我的问题是:
使用 将数据从服务发送到活动可能会出现哪些安全问题
LocalBroadcastManager
?是否存在数据可能泄漏到另一个应用程序的情况?LocalBroadcast 真的是本地的吗?处理后的数据是私有的,这就是我担心的原因。服务和活动之间是否有更优化的通信方式?
android - 将“暂停/恢复”按钮的图像与实际状态同步
在我的 Android 应用程序中有一个服务执行长时间运行的任务(例如播放音乐),它可以处于以下两种状态之一:运行或暂停。有一个“暂停/恢复”图像按钮可以暂停/恢复任务。由于其他原因(不是来自 UI),任务也可能被暂停。根据任务的当前状态(运行或暂停),按钮的外观应有所不同。所以我需要将按钮图像与任务的实际状态同步。
现在我想出了以下解决方案:我的服务有静态pause
和resume
方法,它们向自己发送意图,如下所示:
由于doPause()
anddoResume()
也可以从其他地方调用,所以我不能在调用MyService.pause()
/时将图像设置为 ImageButton MyService.resume()
:按钮图像和任务的实际状态可能会变得不同步。相反,我使用 LocalBroadcastManager 在应该更新按钮时通知活动:
代码doResume()
类似。因此,我的活动注册了接收器并将图像设置为onReceive()
.
该解决方案似乎有效。但我的问题是是否有更好/更简单的方法来实现相同的目标?有什么最佳实践吗?
android - 为什么 Android 的 LocalBroadcastManager 没有运行?
我不明白这段代码有什么问题。
Listener 在活动的 onCreate 中:
寄存器在activity的onResumen中:
发件人在一个按钮中,我可以看到日志运行良好,但 test 的值为 false:
为什么 BroadcastReceiver - onReceive 的代码永远不会运行?
android - android:当应用程序处于非活动状态时如何从服务接收广播
当我的服务正在运行并且我可以在屏幕上看到我的应用程序时,一切正常。我的服务发送广播消息,我可以在“MainActivity”中看到它们。但是一旦我按下主页按钮并且我的应用程序不再处于前台,它就会停止。该服务仍在运行,但广播没有到达我的“死”或“暂停”应用程序。这是我的代码:
主要活动:
服务:
android - registerReceiver 上的 Android ANR
我的应用程序有时会在此行崩溃:
在 traces.txt 我发现, registerReiceiver 被发送广播的线程阻塞。
我怎样才能避免这种情况?