单任务Activity Android + 重新创建该Activity

3
有两个活动,A 和 B。
第一个活动是 A(它已经配置了一些来自 Intent Bundle 的东西...)
A -> B B -> A(启动新的 Activity,不是 onBackPressed())。Activity A 需要重新创建,Intent 的 Bundle 已经改变。它也必须是 singleTask。
B 到 A 应该重新创建 A 活动,我不想使用 Activity A 的 onResume()。
编辑:就像 WhatsApp。 你在一个群组里 -> 设置 -> 群信息 -> 成员点击 -> 发送消息 它启动相同的活动(聊天活动),但当你回到群聊界面时,聊天活动不存在了。
有什么想法吗?

你为什么一开始就要使用SingleTask呢?听起来这不是你想要的。 - DeeV
CLEAR_TOP标志可能会有帮助。 - Petrov Dmitrii
@DeeV 因为我只需要一个"A" Activity。 - Borja
编辑后的文本:例如: - Borja
如果A开始B,意图让B在A中改变一些东西,使用startActivityForResult,并在A中处理已完成的操作。无需重新启动A。 - njzk2
2个回答

0

为此,使用FLAG_ACTIVITY_CLEAR_TOP和在您的活动singleinstance中的manifestlaunchMode

当使用Click从B --> A时


不行,因为我可能会通过onBackPressed返回,这样A活动就会被杀死。 - Borja

0

我不确定我是否理解您的问题,但您可以使用onNewIntent:

如果您只想为从B启动时传递的数据重新创建Activity A,您可以重写Activity A的onNewIntent方法,获取bundle并执行您的操作。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    initLayout();
}

你的onCreate方法可以像这样写:
@Override
public void onCreate(Bundle icicle){
   super.onCreate(icicle);
   setContentView(R.id.your_layout);
   // find views;
   initLayout();
}

public void initLayout(){
    final Bundle bundle = getIntent().getExtras();
    if(bundle != null){
       // init layout
       // do other staff
    }
}

我认为这是处理您的问题的最佳方式。

祝你好运。


我在onCreate方法中做了很多事情。我认为这不是最好的选择... - Borja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接