Y.S*_*Y.S 9 android android-service android-broadcast localbroadcastmanager android-broadcastreceiver
我有一个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);
}
.....
.....
}
Run Code Online (Sandbox Code Playgroud)
我有一个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;
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作.实现这一点后,我意识到本地广播更适合这种情况:
@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;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,上述方案不起作用.每次都发送全局广播,而本地广播显然从未发送/接收.
我在这里错过了什么?无法在两个不同的应用程序组件之间发送本地广播,例如两个单独的Activitys或从一个Service到另一个Activity?我究竟做错了什么??
注意:
根据文档,它更有效,更重要的是发送本地广播(应用内广播,其范围仅限于应用程序自己的组件)而不是全局广播(发送到应用程序间的广播)每当我们不需要广播在应用程序之外传播时,手机上的每个应用程序.这是进行上述改变的原因.
ρяσ*_*я K 14
我在这里错过了什么?
使用LocalBroadcastManager用于登记LocalBroadcast,目前使用registerReceiver其用于登记全球广播活动的方法:
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2870 次 |
| 最近记录: |