gpt4 book ai didi

android - 从后台恢复后如何更新此 Activity 将开始的 Intent ?

转载 作者:行者123 更新时间:2023-11-29 02:14:46 25 4
gpt4 key购买 nike

我在处理程序 onCreate 中的 Activity 从 Intent 中检索一个值并用它做一些事情

protected void onCreate(Bundle b){
....
Intent i = getIntent();
if (i.hasExtra("value")){
String val = i.getStringExtra("value");
doSomethingWithValue(val);
}
}

请注意,我的 Activity 在 list 中具有属性 android:launchMode="singleTask"。执行 doSomethingWithValue 后,我想从 Intent 中清除 "value" extra,所以当下次 Activity 从后台恢复时, Intent 返回但 getIntent() 不应该有 "value" 额外的。如何为下一次执行 onCreate 清除此值? setIntent 在这里不起作用。

换句话说,当我按下后退按钮然后返回到我的应用时,doSomethingWithValue(val) 会再次执行,但我不需要这个。

最佳答案

我不知道 Intents 是否可以更改,尽管这个概念对我来说似乎是错误的(毕竟是 Intent 启动了您的 Activity 并且没有改变)。

我建议将 doSomethingWithValue() 的成功执行存储在一个属性中,比如 mSomethingDone。当 Activity 被系统(而不是用户)取下时,调用 onRetainNonConfigurationInstance。实现:

@Override
public Object onRetainNonConfigurationInstance() {
return mSomeThingDone;
}

现在在您的 onCreate 中检索 bool 值:

@Override
public void onCreate(Bundle savedInstanceState) {
final Object data = getLastNonConfigurationInstance();
if (data != null) {
mSomeThingDone = (Boolean)data;
}
}

然后根据 mSomeThingDone 的值检查是否需要运行 doSomethingWithValue。

关于android - 从后台恢复后如何更新此 Activity 将开始的 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com