У меня есть 2 действия A и B. Моя деятельность A объявлена singleInstance
в файле манифеста.Я не хочу воссоздавать активность B каждый раз, когда она вызывается из A, потому что в ней есть некоторые данные, которые я не хочу перезагружать каждый раз.Итак, я запускаю действие B из A с intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
.Я отправляю дополнительные данные String с намерением от A до B. В первый раз все работает нормально.Моя проблема во второй раз, когда я снова запускаю действие B с некоторыми новыми данными String (запуск B из некоторых других представлений назначения или кнопок в A), действие B не получает новые данные String с getIntent().getStringExtra("MY KEY")
.
.исследование, которое я обнаружил в этом случае, когда A запускает B во второй раз (когда B уже создан и остановлен в фоновом режиме), действие A не отправит новый объект Intent для запуска действия B снова.Os будет использовать операцию B из истории стека.
Поэтому я хочу знать, как я могу получить новый объект Intent в B (для получения новых данных String, соответствующих новому месту назначения запуска из A).
Я нашел 1 решение - новый объект Intent можно получить с помощью onNewIntent(Intent intent)
, например,
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent!=null){
setIntent(intent);
}
}
, но я не совсем понимаю метод onNewIntent(Intent intent)
.Поэтому я хочу знать, как мы можем использовать этот метод в этом случае или есть ли лучший способ сделать это.