2014-11-03 4 views
0

Например, например, телефон работает с 2 или более приложениями, вызывая onReceive(). Имеет андроид какой-то порядок задач для запуска всех тхаков @Overrides упорядоченной последовательностью? Наверное, да, то в каком порядке, значение приложения?Что происходит, когда/if onReceive override вызывается из нескольких приложений?

App1 & App2:

App1:

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    String message = intent.getStringExtra("message"); 
    Log.d("receiver", "Got message: " + message); 
    } 
}; 

App2:

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    String message = intent.getStringExtra("message"); 
    deleteMessageFromInbox(message); // or just something that can conflict other Instance 
    } 
}; 

ответ

1

Вы можете определить порядок, в котором намерения обрабатываются с помощью атрибута BroadcastReceiversandroid:priority. Когда намерение может обрабатываться несколькими приемниками, Android генерирует упорядоченный список (в зависимости от приоритета каждого получателя) и последовательно выполняет намерение.

Так что в вашем случае, когда вы регистрируетесь приемники (через registerReceiver(BroadcastReceiver receiver, IntentFilter filter), все, что вам нужно сделать, это назначить более высокий приоритет (через вызов setPriority(int priority)) намерение фильтра в App1, чем к фильтру в App2, чтобы убедиться, что App1 получает намерение до App2.

Существует также старый article in the Android developers blog, который дает вам примеры того, как эффективно реализовать этот механизм.

Смежные вопросы