Заменете нормалното намерение с чакащо

Има дейност, която обикновено се стартира от:

intent = new Intent(CheckOutActivity.this, LiveStatusActivity.class);
startActivity(intent);
finish();

LiveStatusActivity е най-новата дейност, стартирана от CheckOutActivity. Сега да кажем, че LiveStatusActivity лежи в горната част на стека за активност.

В същото време започвам чакащо намерение при получено известие,

Intent in = new Intent(this, LiveStatusActivity.class);
in.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
contentIntent = PendingIntent.getActivity(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT);

При чакаща дейност с намерение предишната LiveStatusActivity, която е стартирана от друга дейност, трябва да бъде актуализирана/заменена.

В момента LiveStatusActivity е стартирана (чрез чакащо намерение) и друга същата дейност все още е там зад нея.

т.е. LiveStatusActivity(top t by pending intent)-----> LiveStatusActivity(t-1 by checkoutactivity)---->.....

Опитах различни флагове, проверих много отговори в S.O, всичко напразно. Опитах също да сложа android:launchMode="singleTask", същият резултат.


person Ritesh Kumar Gupta    schedule 16.08.2015    source източник


Отговори (1)


  make your LiveStatusActivity as android:launchMode="singleTask" in manifest.xml


  and in your LiveStatusActivity override the onNewIntent(Intent intent) method
  So when it will be called second time this onNewIntent() will be called and inisde that you can update your Activity.

Премахнете и този флаг in.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

person Sumit Agrawal    schedule 17.08.2015