Я перехватываю sms-сообщения с некоторой информацией в них. Затем в моем SmsListener я создаю уведомление для отображения в строке состояния. Затем, когда пользователь нажимает на уведомление, я хочу
Моя активность определяется как
Activity запущена как
Intent i = new Intent();
i.setClass(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Также в моей деятельности я переопределил метод onNewActivity
@Override
public void onNewIntent(Intent intent){
super.onNewIntent(intent);
// I have data from broadcast in intent variable passed to this activity
processDataFromBroadcast(intent);
}
. Он отлично работает, если MainActivity уже существует, но если MainActivity не существует, это запустился, однако onNewIntent не был вызван
Затем я попытался вызвать processDataFromBroadcast из onCreate: processDataFromBroadcast (getIntent ())
.
В первый раз данные из моей трансляции передаются правильно.
Однако, если MainActivity отправляется в фоновый режим, а затем снова выводится на передний план, вызывается либо onCreate, либо onNewIntent, и processDataFromBroadcast снова выполняется с намерением, отправленным широковещательной передачей, и, таким образом, моя MainActivity обновляется данными из широковещательной передачи каждый раз, когда приложение выводится на передний план - последнее нежелательно, как я могу заставить мою деятельность забыть об этом намерении после первой обработки.
Вот пример приложения.