使用 activity 中的 startActivityForResult,它是用 FLAG_ACTIVITY_NO_HISTORY 启动的

Using startActivityForResult from activity which was launched with FLAG_ACTIVITY_NO_HISTORY

我的应用程序由一个服务(它实现一个状态机,响应 UI 和网络事件)和几个状态活动组成,对应于状态机的状态。

状态变化使用FLAG_ACTIVITY_NO_HISTORY启动状态活动,使用户无法绕过状态机得到"back"到"wrong"activity。这会使 "back" 按钮退出应用程序。 (重新启动应用程序时状态仍然存在。)

我想用startActivityForResult启动非状态activity。

当启动非状态 activity 时,父状态 activity 停止,正如我所料。

当非状态 activity 调用 finish() 时,父状态 activity 被销毁,而不是被(重新)启动,甚至在父状态 onActivityResult 之前被调用。

这是因为父 activity 是用 FLAG_ACTIVITY_NO_HISTORY 启动的吗?

是的,我发现这就是问题的原因。

我遇到了同样的问题,Adeel Turk 解决了!谢谢你们!

发生在switch out/home pressed/call StartActivityForResult, app will get "killed"(finished).

只需将此添加到第二个 Activity。(MainActivity)

顺便说一句,我的第一个是开始Activity(带模式锁)。第二个是 MainActivity()

@Override
public void onBackPressed(){
    FragmentManager manager = getSupportFragmentManager();

    if (manager.getBackStackEntryCount() > 1){
        super.onBackPressed();
    }
    else{
        finish();
    }
}