Android 防止通过传入意图覆盖我的意图

Android 防止通过传入意图覆盖我的意图,android,android-intent,Android,Android Intent,在我的接收器上,我每秒接收意图,广播发送意图。。。我想防止传入的意图覆盖当前意图,直到我从当前意图获得信息 我的尝试: 。 没有编译错误,也没有运行时错误,但这样可以防止意图只到达第一个意图 更新 试试这个 if (readytoReceive){ readytoReceive=false; // stop incoming Intent Bundle bundle = intent.getExtras(); if (bundle != null) { // g

在我的接收器上,我每秒接收意图,广播发送意图。。。我想防止传入的意图覆盖当前意图,直到我从当前意图获得信息

我的尝试:

没有编译错误,也没有运行时错误,但这样可以防止意图只到达第一个意图

更新

试试这个

if (readytoReceive){
readytoReceive=false; // stop incoming Intent
        Bundle bundle = intent.getExtras();
        if (bundle != null) { // get info.
            {
                SendRandom.incom.setFrom(bundle.get("From").toString());
                SendRandom.incom.setTo(bundle.get("To").toString());
                SendRandom.incom.setTogender(bundle.get("toGender").toString());
                SendRandom.incom.my_gender = bundle.get("SenderGender").toString();
                SendRandom.incom.type = bundle.getInt("msgType");
                SendRandom.incom.url = bundle.get("url").toString();
                SendRandom.incom.userID = bundle.get("SenderID").toString();
                SendRandom.incom.setTime(bundle.getString("Time"));
                SendRandom.incom.setBody(bundle.get("body").toString());
                Log.d("SOMAA", "Receiver Received: " + SendRandom.incom.getBody() + " type: " + SendRandom.incom.type);
                MessagesHandler(SendRandom.incom, SendRandom.incom.type);

            }
        } 
      readytoReceive=true; // now let the new intent to come
    }
更新

替换为

LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcastSync(messagesI);

我唯一能想到的是readyToReceive=true;永远不会被击中。逐步使用调试器,看看会发生什么。你说广播是每秒发送一次的吗。如果是这样的话,那么我担心的是,在处理当前广播时,您认为需要阻止后续广播。如果onReceive花费的时间超过1秒。。。要完成,那么你就做错了。收到的邮件。。。方法所做的工作应该尽可能少-即使几百毫秒也可能被认为是一段很长的时间来完成。同样的:在几条消息之后,它停止接收!
  t.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {


                try {
                    if ((incom = (Message) SendRandom.ObjectInServercht.readUnshared()) != null) {
                        Log.e("ESMOA", "Recived :  incomming messages!!!" + incom.getBody());
                        Intent messagesI = new Intent("Messages");
                        messagesI.putExtra("body", incom.getBody());
                        messagesI.putExtra("From", incom.getFrom());
                        messagesI.putExtra("To", incom.getTo());
                        messagesI.putExtra("toGender", incom.getTogender());
                        messagesI.putExtra("SenderGender", incom.my_gender);
                        messagesI.putExtra("msgType", incom.type);
                        messagesI.putExtra("url", incom.url);
                        messagesI.putExtra("SenderID", incom.userID);
                        messagesI.putExtra("Time", incom.getTime());
                        messagesI.putExtra("TEXT", "TEXT");
                        messagesI.setAction("com.esmaeel.incomIM");
                        if(incom.type==MessageType.TextMessage)
                        pushNotification(incom);
                        LocalBroadcastManager.getInstance(seekNet.this).sendBroadcastSync(messagesI);
                        Log.d("SOMAA", "sendBroadcast!! " + incom.type + " " + incom.getBody());
                    }


                } catch (IOException e) {
                    Log.d("SOMAA", "No brodcast!! " + e.getMessage());

                    e.printStackTrace();
                } catch (ClassNotFoundException e) {
                    Log.d("SOMAA", "No brodcast!! " + e.getMessage());
                    e.printStackTrace();
                }catch(NullPointerException nu){
                    Log.d("SOMAA","incom is null!!");
                }
            }
        }, 0, 10); << I need faster broadcasting so changed from 1000 (1 sec) to 10, (1/100 sec)
if (readytoReceive){
readytoReceive=false; // stop incoming Intent
        Bundle bundle = intent.getExtras();
        if (bundle != null) { // get info.
            {
                SendRandom.incom.setFrom(bundle.get("From").toString());
                SendRandom.incom.setTo(bundle.get("To").toString());
                SendRandom.incom.setTogender(bundle.get("toGender").toString());
                SendRandom.incom.my_gender = bundle.get("SenderGender").toString();
                SendRandom.incom.type = bundle.getInt("msgType");
                SendRandom.incom.url = bundle.get("url").toString();
                SendRandom.incom.userID = bundle.get("SenderID").toString();
                SendRandom.incom.setTime(bundle.getString("Time"));
                SendRandom.incom.setBody(bundle.get("body").toString());
                Log.d("SOMAA", "Receiver Received: " + SendRandom.incom.getBody() + " type: " + SendRandom.incom.type);
                MessagesHandler(SendRandom.incom, SendRandom.incom.type);

            }
        } 
      readytoReceive=true; // now let the new intent to come
    }
LocalBroadcastManager.getInstance(seekNet.this).sendBroadcastSync(messagesI);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcastSync(messagesI);