为什么LocalBroadcastManager.getInstance(上下文上下文)需要上下文作为参数?

时间:2014-03-12 15:06:30

标签: android broadcastreceiver localbroadcastmanager

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

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

并发出如此广播:

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

为什么甚至要求getInstance的Context?如果我可以说new Activity()并且它仍然有效,那有什么意义呢?

1 个答案:

答案 0 :(得分:4)

目前,LocalBroadcastManager使用提供的Context来呼叫getApplicationContext()。虽然new Activity()目前可能在您测试过的任何地方都可以使用,但我不会依赖这种行为必然适用于Android的所有过去/现在/未来版本。

LocalBroadcastManager需要Context才能使用HandlerLooper作为主应用程序主题,并使用Application代替Context比其他{{1}})更能防止内存泄漏。

欢迎您查看the source code to LocalBroadcastManager以了解有关其内部运作的更多信息。