在Android中的活动之间持久化Intent发送的数据
所以我有AppCompatActivity在Android中的活动之间持久化Intent发送的数据,android,android-intent,android-activity,sharedpreferences,Android,Android Intent,Android Activity,Sharedpreferences,所以我有AppCompatActivityA,B和C。从A,我开始活动B,传递意图I0。在B'sonCreate中,我获取I0并基于该数据初始化UI。现在我打开C(从B)。当我从C按下android.support.v7.widget.Toolbar的app:navigationIcon后退按钮时,B的onCreate再次被调用,但现在意图I0不再包含getStringExtra(“数据”)中的数据 我曾尝试使用onSaveInstanceState和onRestoreInstanceState
A
,B
和C
。从A
,我开始活动B
,传递意图I0
。在B
'sonCreate
中,我获取I0
并基于该数据初始化UI。现在我打开C
(从B
)。当我从C
按下android.support.v7.widget.Toolbar的app:navigationIcon
后退按钮时,B
的onCreate
再次被调用,但现在意图I0
不再包含getStringExtra(“数据”)中的数据
我曾尝试使用onSaveInstanceState
和onRestoreInstanceState
,如其他地方所述,但未调用onRestoreInstanceState
,并且onCreate
中的savedInstanceState
捆绑包为null
所以我想知道是否有一种方法可以保存活动的UI状态B
(不是销毁它?)或者意图I0
的额外数据
感谢@pskink建议将android:launchMode=“singleTop”
设置在活动上,我在Github上创建了一个。这就解决了我的问题,因为在启动活动C时,B
不会以无效的意图重新创建,不要关闭(确切地说是不要调用finish())活动B,这样活动B仍会在backbackback中,因此它不会再次初始化。@nobalG From B,我只是用C调用StartActivity-如何不销毁B?当我从C按下后退按钮时,B的onCreate再次被调用,但现在意图I0为空-因此这次初始化失败
。这显然不是真的,您将具有与第一次启动活动B相同的意图time@pskink你是对的;intent不是null,但是对getStringExtra的调用返回null否,它也有相同的额外值