2

如果我能够像这样注册接收器:

LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("myStringFilter"));

并像这样发送广播:

Intent intent = new Intent("myStringFilter");
LocalBroadcastManager.getInstance(new Activity()).sendBroadcast(intent);

为什么甚至需要 getInstance 的上下文?如果我只能说它new Activity()仍然有效,那有什么意义呢?

4

1 回答 1

6

现在,LocalBroadcastManager使用提供Context的方法是调用getApplicationContext()它。虽然new Activity()目前无论您在哪里测试它都可以工作,但我不会依赖这种行为必然适用于所有过去/现在/未来版本的 Android。

LocalBroadcastManager需要 aContext才能与 aHandlerLooper用于主应用程序线程,并且它Application用于(而不是其他Context)以防止内存泄漏。

欢迎您检查源代码LocalBroadcastManager以了解更多有关其内部工作原理的信息。

于 2014-03-12T15:19:09.360 回答