Во-первых, структура стека может быть исследована. Для режима запуска: singleTop
Если экземпляр того же действия уже находится над стеком задач, этот экземпляр будет повторно использован для ответа на намерение.
Все действия удерживаются в стеке («первым пришел последним»), поэтому, если ваша текущая активность находится на вершине стека и если вы определили ее в manifest.file как singleTop
android:name=".ActivityA"
android:launchMode="singleTop"
если вы в ActivityA воссоздаете действие, оно не будет введено, onCreate возобновит onNewIntent (), и вы можете увидеть это, создав уведомление
Не: Если вы не реализуете onNewIntent (Намерение), вы не получите новое намерение.
Intent activityMain = new Intent(ActivityA.this,
ActivityA.class);
activityMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(activityMain);
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
notify("onNewIntent");
}
private void notify(String methodName) {
String name = this.getClass().getName();
String[] strings = name.split("\\.");
Notification noti = new Notification.Builder(this)
.setContentTitle(methodName + "" + strings[strings.length - 1])
.setAutoCancel(true).setSmallIcon(R.drawable.ic_launcher)
.setContentText(name).build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify((int) System.currentTimeMillis(), noti);
}