如果我能够注册这样的接收器:
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("myStringFilter"));
并发出如此广播:
Intent intent = new Intent("myStringFilter");
LocalBroadcastManager.getInstance(new Activity()).sendBroadcast(intent);
为什么甚至要求getInstance的Context?如果我可以说new Activity()
并且它仍然有效,那有什么意义呢?
答案 0 :(得分:4)
目前,LocalBroadcastManager
使用提供的Context
来呼叫getApplicationContext()
。虽然new Activity()
目前可能在您测试过的任何地方都可以使用,但我不会依赖这种行为必然适用于Android的所有过去/现在/未来版本。
LocalBroadcastManager
需要Context
才能使用Handler
和Looper
作为主应用程序主题,并使用Application
代替Context
比其他{{1}})更能防止内存泄漏。
欢迎您查看the source code to LocalBroadcastManager
以了解有关其内部运作的更多信息。