我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
s或从aService
到a)发送本地广播Activity
吗?我究竟做错了什么??
笔记:
按照该文件,更高效,更重要的是发送一个本地广播(一个内部应用程序广播,其范围仅限于应用程序本身的组成部分),而不是全局广播(一个应用程序内间被发送到广播每当我们不需要广播就可以在应用程序外部传播时,就可以使用手机上的每个应用程序)。这就是进行上述更改的原因。
我在这里想念什么?
使用LocalBroadcastManager
用于登记LocalBroadcast,目前使用registerReceiver
其用于登记全球广播活动的方法:
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句