Android LocalBroadcastManager在emulator(4.4.2)上接收具有相同操作字符串的所有广播,但在电话(4.0.4)上不接收
广播接收机:Android LocalBroadcastManager在emulator(4.4.2)上接收具有相同操作字符串的所有广播,但在电话(4.0.4)上不接收,android,broadcastreceiver,Android,Broadcastreceiver,广播接收机: public class OrderReceiver extends BroadcastReceiver { onReceive(Context mContext, Intent intent) { if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) { //reference 1 //do some wo
public class OrderReceiver extends BroadcastReceiver {
onReceive(Context mContext, Intent intent) {
if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) {
//reference 1
//do some work
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(mContext);
intent.setAction("com.gndp.message.RECEIVED");
lbm.sendBroadcast(intent);
}
else if (action.equals("com.google.android.c2dm.intent.RECEIVE")) {
//reference 2
//do some work
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(mContext);
intent.setAction("com.gndp.message.RECEIVED");
lbm.sendBroadcast(intent);
}
}
内部活动:
onCreate(){
BroadcastReceiver deviceRegisteredBroadcastReciever = new BroadcastReceiver() {
onReceive(Context context, Intent intent) {
//reference 3
if(intent.getStringExtra("data1")==null){
//code 1
}
else{
//code 2
}
}
}
onResume(){
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(mContext);
lbm.registerReceiver(deviceRegisteredBroadcastReciever, new IntentFilter("com.gndp.message.RECEIVED"));
}
在emulator上,代码达到:
参考文献1--->参考文献3
及
参考文献2--->参考文献3
但在设备上,代码达到:
参考文献1--->参考文献3
及
参考2--X-->参考3到达参考2,但在参考3未接收广播
logcat中没有错误。以下是我的androidManifest.xml:
<receiver
android:name="com.gndp.OrderReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.gndp" />
</intent-filter>
</receiver>
也许您的进程在接收GCM广播到达之前终止,因此此时您的活动已消失。@Commonware设备的屏幕始终处于打开状态,活动始终处于前台。进程是否仍有可能被终止?不,这排除了这种情况。