问题标签 [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.

0 投票
0 回答
359 浏览

android - 从服务到片段的广播接收器无法正常工作

我已经实现了一个广播接收器,以每秒从运行 CountDownTimer 的服务传递数据,并将剩余时间传递给片段。

问题是 Fragment 没有正确接收数据,或者说只有当我按下某个搜索按钮、隐藏键盘或活动中的其他东西时才接收数据。

这是我的服务类:

这是我的片段,它应该接收数据并更新列表视图的项目。

在 onCreateView 我注册了一个接收器:

在 onResume 上做同样的事情:

在暂停时取消注册:

TimerStatesReceiver 类:

0 投票
2 回答
691 浏览

android - Android:如何在服务中拥有本地广播接收器

我有一个服务,我想要一个本地广播接收器。我想从活动中获得价值到我的服务 onCreate。

注意:我可以使用意图在 onStartCommand() 中从活动中获取一个值到我的服务。但在这里,我想从服务的 onCreate 中的活动中获得价值。

以下是我的服务文件:

以下是我的活动文件,我想在其中传递一个名为 musicpath 的值

运行后,它说音乐路径值为空。

怎么做?

0 投票
1 回答
103 浏览

android - Android:在非 UI 线程中动态注册我的接收器

我正在尝试优化我的 android 应用程序,并决定将我在方法中注册的所有接收器转移到在onStart方法中启动的线程onStart。这是代码:

我可以用这种方式注册我的接收器吗?

到目前为止,它似乎正在工作,但我不确定这是否只是运气,或者这是否可以保证始终有效。

0 投票
0 回答
1967 浏览

android - Android Activity 与 IntentService 通信

我需要在我的活动和正在运行的 IntentService 之间进行双向通信。

场景是这样的:应用程序可以在运行时安排警报,启动一个从 Web 获取一些数据并处理它的 IntentService。IntentService 完成时可能出现三种情况:

  1. 应用处于焦点状态,这意味着当 IntentService 完成时,应用需要使用新数据刷新其视图。

  2. 应用程序关闭并在 IntentService 完成工作后打开,因此应用程序将可以访问处理后的数据

  3. 该应用程序在 IntentService 运行时打开,在这种情况下,我需要从活动中询问 IntentService 是否在后台执行某些操作。

对于 1. 我已经在我的活动中实现了一个 BroadcastReceiver,它注册到 LocalBroadcastManager。当 IntentService 完成工作时,发送一个广播并且活动做出反应。这工作正常

对于 2. 没有什么需要做的

对于 3. 我不知道该怎么办。到目前为止,我已经尝试过:

在活动中:

在 IntentService 中

我的实现的问题是,在 IntentService 中,BroadcastReceiver 不会触发 onReceive。有什么建议或者更简单的方式让 Activity 询问 IntentService 它在做什么?

LE:试图获得原子布尔值。服务中:

在 Activity 中,在服务运行时重新启动应用程序:

在 AndroidManifest 上

0 投票
1 回答
4597 浏览

android - Activity 未收到来自 Service 的本地广播

我有一个Activity我正在BroadcastReceiver本地注册的一个,如下所示:

我有一个Service广播Intent如下:

这按预期工作。在实现了这个之后,我意识到本地广播更适合这种情况:

不幸的是,上述方案不起作用。每次都发送全局广播,而显然从未发送/接收本地广播。

我在这里想念什么?本地广播不能在两个不同的应用程序组件之间发送,比如两个单独Activity的 s 或从 aService到 aActivity吗?我究竟做错了什么??

笔记:

根据文档,发送本地广播(范围仅限于应用程序自己的组件的应用程序内广播)而不是全局广播传输到手机上的每个应用程序)只要我们不需要广播在应用程序之外传播。这就是进行上述更改的原因。

0 投票
2 回答
403 浏览

android - LocalBroadcastManager 和可能的安全相关问题

这是我计划做的事情:

我有我Activity在其中注册的BroadcastReceiver

我有一个IntentService从网络上获取数据并处理它的。在下载数据和处理完成期间,服务通过发送广播消息通知活动它正在做什么。下载数据和处理可能需要一段时间,具体取决于数据的大小。例如,最多可能需要 20 分钟。

IntentService通过在服务中注册接收器,活动使用类似的方法向 发送消息onStartCommand

这是经过测试的并且工作正常。我已经阅读了有关 globalBroadcastManagerLocalBroadcastManager的信息,并且我担心这种方法的安全性。请记住,我的需求与服务和活动之间的通信严格相关,这两种方式都主要使用可打包的对象。

我的问题是:

  1. 使用 将数据从服务发送到活动可能会出现哪些安全问题LocalBroadcastManager?是否存在数据可能泄漏到另一个应用程序的情况?LocalBroadcast 真的是本地的吗?处理后的数据是私有的,这就是我担心的原因。

  2. 服务和活动之间是否有更优化的通信方式?

0 投票
1 回答
95 浏览

android - 将“暂停/恢复”按钮的图像与实际状态同步

在我的 Android 应用程序中有一个服务执行长时间运行的任务(例如播放音乐),它可以处于以下两种状态之一:运行或暂停。有一个“暂停/恢复”图像按钮可以暂停/恢复任务。由于其他原因(不是来自 UI),任务也可能被暂停。根据任务的当前状态(运行或暂停),按钮的外观应有所不同。所以我需要将按钮图像与任务的实际状态同步。

现在我想出了以下解决方案:我的服务有静态pauseresume方法,它们向自己发送意图,如下所示:

由于doPause()anddoResume()也可以从其他地方调用,所以我不能在调用MyService.pause()/时将图像设置为 ImageButton MyService.resume():按钮图像和任务的实际状态可能会变得不同步。相反,我使用 LocalBroadcastManager 在应该更新按钮时通知活动:

代码doResume()类似。因此,我的活动注册了接收器并将图像设置为onReceive().

该解决方案似乎有效。但我的问题是是否有更好/更简单的方法来实现相同的目标?有什么最佳实践吗?

0 投票
1 回答
349 浏览

android - 为什么 Android 的 LocalBroadcastManager 没有运行?

我不明白这段代码有什么问题。

Listener 在活动的 onCreate 中:

寄存器在activity的onResumen中:

发件人在一个按钮中,我可以看到日志运行良好,但 test 的值为 false:

为什么 BroadcastReceiver - onReceive 的代码永远不会运行?

0 投票
5 回答
1685 浏览

android - android:当应用程序处于非活动状态时如何从服务接收广播

当我的服务正在运行并且我可以在屏幕上看到我的应用程序时,一切正常。我的服务发送广播消息,我可以在“MainActivity”中看到它们。但是一旦我按下主页按钮并且我的应用程序不再处于前台,它就会停止。该服务仍在运行,但广播没有到达我的“死”或“暂停”应用程序。这是我的代码:

主要活动:

服务:

0 投票
0 回答
319 浏览

android - registerReceiver 上的 Android ANR

我的应用程序有时会在此行崩溃:

在 traces.txt 我发现, registerReiceiver 被发送广播的线程阻塞。

我怎样才能避免这种情况?