Как вывести действие на передний план (или создать, если оно не существует)?

Я перехватываю sms-сообщения с некоторой информацией в них. Затем в моем SmsListener я создаю уведомление для отображения в строке состояния. Затем, когда пользователь нажимает на уведомление, я хочу

  1. Вывести MainActivity на передний план (если такое действие еще не существует, оно должно быть создано)
  2. Передайте ему данные из sms
  3. Выполните некоторые изменения пользовательского интерфейса на основе этого данные в этой MainActivity

Моя активность определяется как

    

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

5
задан Solvek 6 February 2011 в 11:22
поделиться