使用 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();
}
}
我的应用程序由一个服务(它实现一个状态机,响应 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();
}
}