为什么LocalBroadcastManager.getInstance(Context context)需要使用context作为参数?

Ada*_*hns 2 android broadcastreceiver localbroadcastmanager

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

LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("myStringFilter"));
Run Code Online (Sandbox Code Playgroud)

并像这样发送广播:

Intent intent = new Intent("myStringFilter");
LocalBroadcastManager.getInstance(new Activity()).sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

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

Com*_*are 5

现在,LocalBroadcastManager使用提供的Contextfor对其进行调用getApplicationContext()。尽管new Activity()无论您在何处进行测试,目前都可以使用,但我不必依靠这种行为在所有过去/现在/将来的Android版本上都可以使用。

LocalBroadcastManager需要使用a Context以便与Handler和一起Looper用于主应用程序线程,并且它Application用于该线程(而不是其他线程Context)以防止内存泄漏。

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