2015-08-19 5 views
2

Мое приложение вызывает уведомления. Нажав на уведомление, приложение нужно запустить или перенести на передний план. Вот цель для уведомления:Android - Определите, запущено или запущено приложение, нажмите

Intent launch_intent = new Intent("android.intent.action.MAIN"); 
    launch_intent.setComponent(new ComponentName("com.example.helloworld","com.example.helloworld.MainActivity")); 
    launch_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
    launch_intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    launch_intent.putExtra("some_data", "value"); 

И в моем приложении я хочу, чтобы определить, является ли он запущен или на передний план уведомлением щелчком, поэтому я использую putExtra там. Затем в MainActivity onResume я проверяю данные намерения. Это отлично работает, приложение запускается нажатием уведомлений.

Однако, если приложение было перенесено на передний план с помощью уведомления, нажмите, в MainActivity onResume нет данных о намерениях.

Я думаю, что причина такова: MainActivity - это основная активность, и это заставка. При добавлении приложения на передний план может быть любое количество действий. И когда он выведен на фронт, я хочу сохранить свое состояние.

Каков правильный способ сделать это?

+0

Проверить в 'onNewIntent()' метода. – Rohit5k2

+0

Но я не использую flag_activity_single_top. Когда приложение выведено на передний план, я хочу сохранить его состояние. – Shawn

ответ

0

Переведите onNewIntent() в свою деятельность и проверьте ее там. Если вы хотите, чтобы будущие звонки getIntent(), чтобы вернуть это новое намерение, вы можете позвонить setIntent() и передать новое намерение.

+0

Но я не использую flag_activity_single_top. Когда приложение выведено на передний план, я хочу сохранить его состояние. – Shawn

0

Попробуйте onNewIntent() метод

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    String value = intent.getStringExtra("some_data"); 
} 
+0

Но я не использую flag_activity_single_top. Когда приложение выведено на передний план, я хочу сохранить его состояние. – Shawn

+0

Это не приведет к перезагрузке. – Rohit5k2

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