服务未收到活动的本地广播

我有一个Activity ,我在本地注册BroadcastReceiver ,如下所示:

 public class SomeActivity extends Activity{ public static final String PERFORM_SOME_ACTION = "PERFORM_SOME_ACTION"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.some_activity_layout); ..... ..... IntentFilter filter = new IntentFilter(); filter.addAction(PERFORM_SOME_ACTION); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // perform some action ... } }; registerReceiver(receiver, filter); } ..... ..... } 

我有一个Service ,我通过它来广播一个Intent ,如下所示:

 @Override public int onStartCommand(Intent intent, int flags, int startId) { Intent i = new Intent(SomeActivity.PERFORM_SOME_ACTION); sendBroadcast(i); /* Send global broadcast. */ return START_STICKY; } 

这按预期工作。 实现这一点后,我意识到本地广播更适合这种情况:

 @Override public int onStartCommand(Intent intent, int flags, int startId) { Intent i = new Intent(SomeActivity.PERFORM_SOME_ACTION); LocalBroadcastManager.getInstance(this).sendBroadcast(i); /* Send local broadcast. */ return START_STICKY; } 

不幸的是,上述方案不起作用。 每次都发送全局广播,而本地广播显然从未发送/接收。

我在这里想念的是什么? 是否可以在两个不同的应用程序组件之间发送本地广播,例如两个单独的Activity或从ServiceActivity ? 我究竟做错了什么??

注意:

根据文档 ,它更有效,更重要的是发送本地广播( 应用内广播,其范围仅限于应用程序自己的组件)而不是全局广播(发送到应用程序间的广播)每当我们不需要广播在应用程序之外传播时,电话上的每个应用程序。 这是进行上述改变的原因。

我在这里想念的是什么?

使用LocalBroadcastManager注册LocalBroadcast,当前使用Activity的registerReceiver方法,用于注册全局广播:

 LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter);