我有2个活动A和B。我的活动A在清单文件中声明为singleInstance
。我不想每次从A调用活动B时都重新创建它,因为它包含一些我不想每次都重新加载的数据。因此,我正在使用intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
从A启动活动B。
我正在从A到B发送额外的String数据。第一次它可以正常工作。我的问题是第二次我再次使用一些新的String数据启动活动B(从其他目标视图或A中的按钮启动B)时,活动B没有使用getIntent().getStringExtra("MY KEY")
接收到新的String数据。
通过做一些研究,我发现在这种情况下,当A第二次启动B(当B已创建并在后台停止时)时,活动A不会再次发送新的Intent对象来启动活动B。操作系统将使用堆栈历史记录中的活动B。
所以我想知道如何在B中接收新的Intent对象(用于从A接收与新的启动目标相对应的新的String数据)。
我发现1个解决方案-这样的onNewIntent(Intent intent)
可以接收到一个新的Intent对象
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent!=null){
setIntent(intent);
}
}
但是我对onNewIntent(Intent intent)
方法感到困惑。因此,我想知道在这种情况下如何使用此方法,或者有没有更好的方法可以做到这一点。