问题标签 [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 投票
1 回答
719 浏览

android - 比较使用 LocalBroadcastManager 和 Otto 的性能

我正在尝试比较使用LocalBroadcastManagerOtto在 Android 中的性能。据我所知,Otto 使用的是注解和 Java 反射,因此可能会对性能产生一些影响。有人可以建议我做些什么来衡量这两种方式的性能吗?哪个会消耗电池?

0 投票
2 回答
1922 浏览

android - LocalBroadcastManager 不工作

我正在尝试将 sendMessage 从服务发送到活动,但由于某种原因它不起作用。

活动

服务

显示 Log.d “广播消息”,然后什么也没有发生

问题解决了

在android清单中

似乎在指定 android:process 时 localbroadcastmanager 不起作用。我刚刚删除了 android:process 行并且它起作用了

0 投票
1 回答
966 浏览

android - 使用 LocalBroadcastManager 注册 BroadcastReceiver 时未调用 onReceive

当我的应用开始BroadcastReceiver使用. 因为我只想在从我的应用程序开始下载时捕获,所以我使用了.ACTION_DOWNLOAD_COMPLETEDownloadManagerACTION_DOWNLOAD_COMPLETELocalBroadcastManager

onReceiver根本没有被调用。DownloadManagerapp 显示下载完成但未onReceive触发。当我使用registerReceiver它时,它按预期工作。但这会让应用程序得到通知,即使下载是由其他应用程序开始的。所以 LocalBroadcastManager 是需要的。

主要活动

下载接收器

它根本不onRecieve应该调用。指出我在这里做错了什么。现在被困在这里很长时间了。我无法使用registerReceiver,因为只有在我的应用开始下载时才需要跟踪下载完成操作。

0 投票
1 回答
599 浏览

android - 为什么以及何时使用 LocalBroadcastManager?

我已经阅读了几个 LocalBroadcastManager Android 教程,但找不到它的实际用途以及为什么要使用它?

0 投票
2 回答
1263 浏览

android - 未调用 LocalBroadcastManager onReceive()

这就是我正在做的事情:

我正在向MainActvity我的Fragmentusing发送一个意图LocalBroadcastManager。我在 Fragment 类中编写了onReceive()代码。onCreateView()我正在注销 Receiver onDestroy()

但是onReceive()没有被调用。为什么?

MainActivity类中:

在我的片段类中:

为什么那个接收器没有被调用?请问有什么帮助吗?

0 投票
1 回答
214 浏览

android - Activity、Service之间有什么样的通信方式?

我正在尝试开发一个由 Activity 和 Service 组成的 Android 应用程序。Activity 在 Service 上启动一个无限期的进程,该进程将从 Activity 中关闭。不使用 then 子类 IntentService,而是直接使用 Service。由 onStartCommand 和 OnDestroy 控制。

我显然需要将信息从 Activity 传递给 Service:Service 的状态和一些字符串。

我尝试使用 LocalBrodcastManager,但是当转动设备或活动进入 onPause 状态时,消息将丢失。我试图遵循几个例子,但收效甚微。特别是我无法完成它,因为缺少一些信息,显然被认为是显而易见的,但对我来说并不明显:https ://developer.android.com/training/run-background-service/report-status.html

然后我尝试通过 IBinder 使用 Messenger(示例:使用消息传递在 Activity 和服务之间进行通信),但程序似乎有点复杂,我无法满足我的需求。

我需要的是从我的活动中启动服务(可能自动绑定?,如果使用 Messenger),服务应该发出活动信号,然后服务通过 GPS LocationListener 记录一些点,将其写入文件并应该再次指出活动,正在记录的数据,文件大小等。

你推荐使用什么来传递这些信息,你能给我一些例子吗?

0 投票
2 回答
836 浏览

android - LocalBroadcastManager 可以检测到 WifiManager.NETWORK_STATE_CHANGED_ACTION 的变化吗?

我想使用 BroadcastReceiver 通知我的 Activity 任何 Wifi 连接更改。由于此广播在应用程序中,因此我尝试使用更高效的 LocalBroadcastManager 对象。

但是,无论我做什么,BroadcastReceiver.onReceive() 方法都不会触发。我可能连接不正确,或者我正在监听的 WifiManager.NETWORK_STATE_CHANGED_ACTION 操作无法针对 LocalBroadcastManager 注册?任何帮助或澄清将不胜感激。

这是我的 Activity 类的示例,其中包含所有逻辑。

}

当我打开和关闭手机上的 wifi 或进入和离开 wifi 范围时,永远不会触发 onReceive() 方法。

0 投票
2 回答
633 浏览

android - LocalBroadcastManager 只有支持库?

在我的 Android 应用程序中,我想广播一些通知。在MainActivity我处理消息的注册BroadcastReceiver中,但据我所知,BroadcastReceiver如果我不想从应用程序中发送消息,不建议使用全局。应该使用LocalBroadcastManageror而不是这个。Handler在我的情况下LocalBroadcastManager更合适,但根据文档,它是支持库的一部分。

我的应用只支持 Android 4 和 5,所以我没有使用支持库。有没有办法在LocalBroadcastManager没有支持库的情况下使用?谢谢

0 投票
1 回答
2510 浏览

android - 避免在 Android 中注册重复的广播接收器

我正在尝试创建我的第一个 Android 应用程序。我想要一个主线程 Activity(在我的例子中:ActionBarActivity)从后台 Activity(在我的例子中:IntentService)接收事件通知。我读过使用广播应该是做到这一点的最佳方式。

要注册广播接收器以收听从后台活动发送的广播,我在主线程活动中使用以下代码:

我尝试将它放在我的主线程活动的 onCreate() 方法中,但我很快发现每次我重新启动活动(例如关闭应用程序并重新打开它),它似乎创建“重复”广播接收器,然后在发送单个广播时多次触发广播接收器的 onReceive() 方法。这导致了问题。

所以我创建了一个 SharedPreferences 文件来保存一个布尔值,它记住我是否已经创建了一个广播接收器,以避免创建重复。这完全符合预期,直到我重新启动设备,然后广播接收器被销毁,并且应用程序不会创建新的,因为 SharedPreferences 布尔值表示它已经有一个。

我猜我可以通过设置一个新的广播接收器来侦听设备重启来解决这个问题,这会重置 SharedPreferences 布尔值,但我有一种唠叨的感觉,我让事情变得过于复杂。我错过了什么?感谢您提供的任何帮助!

0 投票
3 回答
1147 浏览

android - Android IntentService/Service 向 Web 服务请求/发送数据并获取 UI 的进度

基本上在 Android 上,我正在尝试从 Web 服务上传/下载数据,并有一个进度条,应该显示进度百分比。

以下是我实施的方法以及考虑它们的原因:

  1. 选择IntentService在后台运行: 根据链接,我无法使用绑定服务,因为绑定的 Activity/Fragment 被销毁时它会销毁。因此选择了IntentServiceover Service。将它移过去一次,意图服务在工作线程上工作,所以它会好得多。
  2. 广播以接收更新:通过注册它以侦听从上述LocalBroadcastManager接收到的广播来更新进度条 UI 的 实现。IntentService

然而,使用这种方法,需要解决以下问题:

不维护广播顺序。广播携带上传/下载的进度百分比。但是由于没有维护顺序,我有可能收到过时的更新(例如:我可能会在 40% 之后收到 30%)。我也尝试过使用sendBroadcastSyncthe 方法,LocalBroadcastManager但它不能始终如一地工作(我对此不太确定)。因此,我尝试通过实现MessengerHandler但是我知道一旦重新创建 UI(Activity/Fragment 被销毁和创建),该方法将无法重新连接到正在进行的上传/下载。基本上,对 的引用Handler与先前的活动/片段一起丢失,因此消息不会传递到 UI 进行更新。

一段时间以来,我一直在努力解决问题,但我无法完成。你的智慧之言会很有帮助。