【问题标题】:LocalBroadcastManager don't receive broadcast on 2.3LocalBroadcastManager 在 2.3 上不接收广播
【发布时间】:2014-07-02 07:29:33
【问题描述】:

不适用于 2.3。但适用于 4.0.x。为什么?

从 IntentService 发送:

intent.setAction(MessagesThread.NEW_MESSAGE);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

接收

protected void onStart() {
super.onStart();
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,new IntentFilter(NEW_MESSAGE));
}

protected void onStop() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
super.onStop();
}

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
    .......................................
            .......................................
}
};

【问题讨论】:

  • 在哪里注册接收器,什么时候发送广播?
  • 需要在清单中注册?
  • 您使用哪个版本的 android.support.v4.jar 实现了适用于 android2.3 的 LocalBroadcastManager?您的预期服务“在您的流程中”吗?
  • 不,您不需要在清单中注册,但顺序很重要
  • android.support.v4.jar 修订版 20

标签: android android-intent intentservice localbroadcastmanager


【解决方案1】:

我不确定,但问题可能是由 LocalBroadcastManager 引起的。尝试在不使用 LocalBroadcastManager 的情况下发送广播,如下所示:

发送广播

Intent i = new Intent("ALERT_CHANGE");
i.putExtra("DATA","News");
sendBroadcast(i);

接收广播活动

registerReceiver(uiUpdated, new IntentFilter("ALERT_CHANGE"));


private BroadcastReceiver uiUpdated= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) 
{
String DATA = i.getStringExtra("Data");
txt.settext(DATA);
}
};

【讨论】:

    【解决方案2】:
    LocalBroadcastManager.getInstance(this).sendBroadcast(newIntent(MessagesThread.NEW_MESSAGE).putExtras(intent));
    

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多