Прямо сейчас у меня есть LinkedList
из намерений в IntentService
, который отслеживает, какие намерения находятся в очереди от Service
. Я нахожу, что метод никогда не возвращается true, даже для идентичных намерений. Есть ли что-то еще, что я должен сделать, чтобы сравнить два намерения?Как сравнить два намерения для равенства
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(queue.contains(intent)){
//Never reaches here
intent.setAction(NO_ACTION);
}
queue.push(intent);
return super.onStartCommand(intent, flags, startId);
}
Пример кода для отправки Намерение:
Intent i = new Intent(context, NodeIndexService.class);
i.setAction(NodeIndexService.REFRESH);
i.putExtra(NodeIndexService.TYPE, indexType);
i.putExtra(NodeIndexService.RESULT_RECEIVER, receiver);
context.startService(i);
Два Intents посылают один за другим с этим кодом должны быть идентичны, нет? Контекст не меняется, а дополнительные параметры одинаковы.
Что вы имеете в виду под «идентичных» намерений? Вам нужно будет определить, что значит для них быть равным, иначе это будет просто идентификация объекта. –
«Идентичность» означает одно и то же действие, тип и дополнительные функции. Я предположил, что если бы два намерения были уволены с этими параметрами, равными по соответствующему Intent, equals() вернет true. – SeanPONeil