запретить прием трансляций несколько раз - PullRequest
2 голосов
/ 11 февраля 2012

Я использую этот тип настройки для своих трансляций:

IntentFilter filter = new IntentFilter("com.commonsware.cwac.tlv.demo.onlineDbResult");
    filter.addCategory(INTENT_CATEGORY);
    ResultReceiver receiver= new ResultReceiver();
    registerReceiver(receiver, filter);

И для вызова получателя:

Intent resultIntent = new Intent("com.commonsware.cwac.tlv.demo.onlineDbResult"); 
      if(categories!=null){
          for(String category:categories){
              resultIntent.addCategory(category);
              Log.d(TAG,"add category "+category);
          }
      }

Каким-то образом зарегистрированный таким образом получатель получает намерение, кратноераза (2 или три раза), почему это так?

com.commonsware.cwac.tlv.demo - это пространство имен, onlineDbResult - это просто добавленная строка, а не класс или что-либо еще.

OnReceive:

 @Override
        public void onReceive(Context context, Intent intent) {
           Bundle extras = intent.getExtras();
           String result = extras.getString("result");
           Log.d("baby","Register received result "+result);
           if(progressDialog!=null)
               progressDialog.dismiss();
           if(result.equals("user_added")){
                 do stuff

Ответы [ 3 ]

1 голос
/ 30 мая 2013

Проверьте, правильно ли вы отменили регистрацию получателя, то есть в onDestroy (), в противном случае вы можете получить одно и то же намерение дважды.

0 голосов
/ 21 мая 2012

Возвращаясь к этому, я думаю, что моя проблема могла заключаться в том, что я смешивал категории и действия.Фильтр совпал с категорией И с действием и поймал намерение по обеим причинам по отдельности, дважды вызвав функцию «Получить».Но я не уверен.Чтобы избежать этого, принимайте обоснованные решения относительно использования категорий или действий

0 голосов
/ 11 февраля 2012

Каким-то образом зарегистрированный таким образом получатель получает намерение несколько раз (2 или три раза), почему это так?

Либо вы зарегистрировали несколько приемников, либо транслировали несколько Intents.

Обратите внимание, что я понятия не имею, почему вы возитесь с категориями в своих трансляциях. Категории в основном используются с мероприятиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...