[英]android BroadcastReceiver: onReceive() method of Receiver is not getting called
[英]onReceive method of BroadcastReceiver is not getting called
我知道有很多与此主题相关的SO帖子,但没有一个在这里工作。
我正在从UserEntry.java类中进行sendBroadcast
调用: ---
final Intent intent = new Intent(DeviceScanActivity.ACTION_DISCONNECTED);
intent.putExtra(DeviceScanActivity.EXTRAS_DEVICE_NAME, bdDevice.getName());
intent.putExtra(DeviceScanActivity.EXTRAS_DEVICE_ADDRESS, bdDevice.getAddress());
getActivity().sendBroadcast(intent);
我在DeviceScanActivity.java类中定义了我的广播接收器: as ---
private final BroadcastReceiver mUpdateReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
device_name = intent.getExtras().getString(DeviceScanActivity.
EXTRAS_DEVICE_NAME);
device_address = intent.getExtras().getString(DeviceScanActivity.
EXTRAS_DEVICE_ADDRESS);
if (ACTION_CONNECTED.equals(action)) {
mConnected = "Connected";
invalidateOptionsMenu();
} else if (ACTION_DISCONNECTED.equals(action)) {
mConnected = "Disconnected";
invalidateOptionsMenu();
} else if (ACTION_CONNECTING.equals(action)) {
mConnected = "Connecting";
invalidateOptionsMenu();
}
else
{
mConnected = "";
invalidateOptionsMenu();
}
}
};
@Override
protected void onResume() {
super.onResume();
registerReceiver(mUpdateReceiver, makeUpdateIntentFilter());
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mUpdateReceiver);
}
因此,用户点击连接按钮, sendBroadcast
从类调用UserEntry
然后用户切换到类DeviceScanActivity
仍onReceive
是永远不会被调用。
您正在DeviceScanActivity.java中注册BroadcastReceiver
,这意味着在DeviceScanActivity处于活动状态之前不会注册它。
换句话说,广播将简单地丢失,因为没有可用于接收广播的接收器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.