Android: когда активность получает трансляцию, как определить, является ли отправитель самой деятельностью?
Мое приложение Android использует LocalBroadcastManager
а также BroadcastReceiver
общаться между видами деятельности. Как вы обнаруживаете активность, когда она получает Intent
который возник из себя, а не из другого Activity
? Другими словами, как вы получаете широковещательный звонок и игнорируете его, если он равен this
,
1 ответ
Решение
Я не знаю, есть ли конкретный способ сделать это, но я бы добавил конкретный action
к моему Intent
это транслируется. Это может выглядеть так:
Intent broadcastIntent = new Intent(MyClass.class.getName());
sendBroadcast(broadcastIntent);
Затем, когда вы получаете трансляцию, вы просто проверяете конкретное действие:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(MyClass.class.getName()) {
// Ignore the broadcast as it's the caller calling itself...
} else {
// Do something with the broadcast...
}
}
Могут быть и другие способы сделать это (например, просто добавить Intent
а затем читать это в onReceive
метод), но я считаю, что это действительно простой способ выяснить, кто звонит.