【问题标题】:Why does LocalBroadcastManager.getInstance(Context context) require context as a parameter?为什么 LocalBroadcastManager.getInstance(Context context) 需要 context 作为参数?
【发布时间】:2017-06-14 18:03:51
【问题描述】:

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

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

并像这样发送广播:

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

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

【问题讨论】:

    标签: android broadcastreceiver localbroadcastmanager


    【解决方案1】:

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

    LocalBroadcastManager 需要一个Context 才能与主应用程序线程的HandlerLooper 一起工作,它为此使用Application(而不是其他一些Context)来防止内存泄漏。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 2019-12-26
      • 2018-07-29
      • 1970-01-01
      • 2021-09-24
      相关资源
      最近更新 更多