1

Я прочитал несколько ответов здесь, я думаю, что у меня есть все, что нужно для достижения моего результата, но мне нужна помощь.Возобновление фоновой активности по уведомлению

Мое приложение запускает уведомление о конкретных условиях, и мне нужно мое приложение вести себя следующим образом:

  • если есть экземпляр моей основной деятельности работает в фоновом режиме Мне нужно, чтобы сделать его на передний план (Я нашел это на сайте: intent.setFlags(FLAG_ACTIVITY_REORDER_TO_FRONT);, поэтому я думаю, что этот вопрос решен;

  • , если в фоновом режиме нет активности приложения. Мне нужно запустить приложение с самого начала (и это может быть достигнутый, начиная с активности запуска приложения);

Мой вопрос: как я могу заставить приложение искать любой из них, работающий в фоновом режиме? Поскольку действие, которое мне необходимо изменить на передний план с помощью флага Intent, отличается от активности запуска.

Уведомление обрабатывается службой, периодически проверяющей информацию из Интернета.

Спасибо за помощь.

ответ

2

Вам нужна простая деятельность, которая решает, что делать. Вот пример:

public class NotificationActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Check if the app was already running 
     if (isTaskRoot()) { 
      // App wasn't running, so start the app from the beginning 
      Intent startIntent = new Intent(this, MyStartingActivity.class); 
      startActivity(startIntent); 
     } else { 
      // App was already running, bring MainActivity to the top 
      Intent reorderIntent = new Intent(this, MainActivity.class); 
      reorderIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
      startActivity(reorderIntent); 
     } 
     // We are done now so just finish 
     finish(); 
    } 
} 

Настройте уведомление, чтобы начать эту деятельность. Убедитесь, что в манифесте близость задачи к этому действию такая же, как близость задачи к другим действиям в вашем приложении (по умолчанию это так, если вы явно не установили android: taskAffinity).

+0

Вау, это прекрасное решение. Я не знал метод 'isTaskRoot'. Очень полезно. Большое спасибо, приятель. – CallMeDeftsu4

+0

Мое удовольствие. Рад помочь. –

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