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 метод), но я считаю, что это действительно простой способ выяснить, кто звонит.

Другие вопросы по тегам