2014-01-03 4 views
0

[UPDATE НИЖЕ]Android - Назад Нажмите на активность, начатую с панели уведомлений

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

Ниже представлена ​​структура приложения:

  1. Для нормального потока/работы, пользователь запустить приложение и активность А является запуск активности, он начинает. Пользователь может перейти к активности B из активности A (то есть A -> B)
  2. При нажатии кнопки «Назад» на B отображается действие «A».

Однако проблема связана с начальным действием с момента нажатия уведомления. Ниже поток:

  1. Пользователь нажимает на уведомления
  2. активность B запускается
  3. По щелчку задней кнопки на активности B, он не приступит к работе А (что понимают), но это Безразлично Также убивайте активность B (перемещает активность B в фоновый режим). Я хочу, если активность B начинается с нажатия на уведомление, то нажимайте кнопку «В», чтобы либо взять пользователя на операцию А, либо убить активность B.

Любые указатели в этом отношении будут оценены.

[UPDATE]:

Удивительно, но это то, что происходит сейчас. 1. Переопределено событие onBackPressed в действии B. 2. В этом методе вызывается функция finish().

Если приложение уже запущено и по щелчку уведомления отображается активность B, а затем нажмите Назад, действие B завершено. Однако, если приложение не запущено, уведомление вызывает запуск операции B и последующее нажатие, оно вызывает метод backpress и finish(), но действие не завершается и не идет в фоновом режиме. Это действительно странно. Или может быть я пропускаю некоторые подробности: ((

Благодаря Shrey

ответ

1

Override в onBackPressed()

@Override 
public void onBackPressed() 
{ 
    finish(); 
    super.onBackPressed(); 
} 

Но, пользователь может непосредственно получил активность B, если он/она начать в вашем приложении. из недавних приложений. Чтобы избежать этого, добавьте ниже в свой ActivityB в манифесте. Если вы переходите к ActivityC отсюда, нажатие в ActivityC не вернется к ActivityB так override onBackPressed() и перезапустите ActivityB через Intent.

<activity 
     android:name="ActivityB" 
     android:clearTaskOnLaunch="true" 
     android:excludeFromRecents="true" 
     android:finishOnTaskLaunch="true" 
     android:noHistory="true"/> 
+0

Я попытался переопределить backPress, но он не завершил действие, он перемещает его на задний план. Это мое ожидающее намерение в методе onRecieve широковещательного приемника: PendingIntent.getActivity (context, 0, \t \t \t \t новое намерение (контекст, B.class), 0); – user3156301

+0

Он наверняка завершит работу, но проблема заключается в том, что при повторном запуске из последних приложений, чтобы избежать того, что вам нужно добавить 'noHistory = true', чтобы проявить – VenomVendor

+0

Даже я чувствую, что это нужно. Но это не так. – user3156301

-1
@Override 
public void onBackPressed() { 
     Intent returnIntent = new Intent(B.this,A.class); 
     B.this.finish(); 
     startActivity(returnIntent); 

} 

Попробуйте как этот

+0

это может сработать, но проблема в том, что если пользователь уже находится в приложении и перешел к активности C (то есть из A -> C), то при щелчке уведомления он откроет активность B. Теперь назад нажмите на B начать деятельность A, а не возвращать пользователя к действию C. – user3156301

+0

вы ничего не говорили о деятельности, scenerio u сказал, что это отличается от этого scenerio .. –

+0

извинения, но я думал, что это будет дано. – user3156301

0

следовать этому потоку: -

1- проверки isLauchFrom в OnCreate() деятельности А.

2- Если isLaunchFrom Notification, то перейдите к Activity B.using startActivityFor Result.

надеюсь, что это поможет вам, если возникнет путаница, отправьте комментарий.

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