最近,我遇到了重新启动已经在后台堆栈中的Activity的问题。标志FLAG_ACTIVITY_REORDER_TO_FRONT是管理此问题的最佳解决方案。但是在Android 4.4&以后它不能很好地工作(有些时候活动视图正在冻结或应用程序最小化,菜单没有膨胀以重新启动活动或键盘不允许输入文本区域的东西)但是在以前的版本中,此标志重新启动Activity,并从后栈中删除。有关详细信息,请查看this link。
答案 0 :(得分:5)
在Android 4.4&之后,在活动创建中使用 FLAG_ACTIVITY_REORDER_TO_FRONT
标志时,应用程序出现异常。主要问题是,有些时候Activity会冻结状态,当导航到另一个活动键盘不能正常工作时(显示键盘但用户无法输入任何文本区域),没有&#39 ; t inflate菜单,或Application导航以最小化状态。
我认为这个问题与后台堆栈和活动流程有关,当启动器活动(在我的应用程序中,SplashScreenActivity是一个启动器)完成时,子活动在使用 FLAG_ACTIVITY_REORDER_TO_FRONT
时会导致一些问题重新启动之前的活动。因此,在这种情况下,不要杀死发射器或父母活动&使用startActivityForResult(childAcivityIntent, requestcode)
启动下一个活动,&在onActivityResult
通话时杀死父母活动。并且还要记住,不要在儿童和儿童中使用singleInstance
或singleTop
标志。家长活动。
private void onStartNextActivity() {
Intent mIntent= new Intent(SplashscreenActivity.this, ChildActivity.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(mIntent, 1111);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1111)
finish();
}
答案 1 :(得分:2)
我也面临同样的问题:
当我通过从子活动设置Activity
标记Intent
返回到父FLAG_ACTIVITY_REORDER_TO_FRONT
时,有时候应用程序在使用Android Marshmallow的Nexus5中最小化。
我挣扎了3天,最后我将activity
的启动模式更改为Single Task
。
现在我的申请工作正常。