'FLAG_ACTIVITY_REORDER_TO_FRONT' Android OS(4.4 及更高版本)的新版本
'FLAG_ACTIVITY_REORDER_TO_FRONT' in new flavors of Android OS(4.4 & later)
最近,我遇到了重新启动已经在后台堆栈中的 Activity 的问题。标志FLAG_ACTIVITY_REORDER_TO_FRONT is the best solution for manage this problem. But in Android 4.4 & later it isn't work well(some times Activity view is getting freezes or Application minimizes itself, menu isn't inflated to re-initiated Activity or Keyboard isn't allow to enter something to text area) but in previous versions this flag re-initiate's the Activity, and removed from back stack. Please review this link了解更多详情。
在 Android 4.4 及更高版本中,当在 Activity 创建中使用 FLAG_ACTIVITY_REORDER_TO_FRONT
标志时,应用程序会出现异常。主要问题是,有时 Activity 会冻结状态,当导航到另一个 activity 键盘时无法正常工作(显示键盘但用户无法在文本区域输入任何内容) ,没有展开菜单,或者应用程序导航到最小化状态。
我认为这个问题与 back-stack 和 activity 的流程有关,当启动器 activity(在我的应用程序中,SplashScreenActivity 是一个启动器)完成时,然后 sub-activity 在使用 FLAG_ACTIVITY_REORDER_TO_FRONT
到 re-initiate 之前的 Activity 时会导致一些问题。所以在这种情况下,不要杀死启动器或 parent activity 并使用 startActivityForResult(childAcivityIntent, requestcode)
启动下一个 activity,并杀死 parent activity onActivityResult
通话时间。还要记住不要在 child 和 parent 活动中使用 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();
}
我也遇到了同样的问题:
当我通过设置子 activity 的 Intent
标志 FLAG_ACTIVITY_REORDER_TO_FRONT
回到父 Activity
时,有时应用程序在 Nexus5 中使用 Android Marshmallow 最小化。
折腾了3天,终于把activity
的Launch模式改成了Single Task
。
现在我的应用程序运行正常。
最近,我遇到了重新启动已经在后台堆栈中的 Activity 的问题。标志FLAG_ACTIVITY_REORDER_TO_FRONT is the best solution for manage this problem. But in Android 4.4 & later it isn't work well(some times Activity view is getting freezes or Application minimizes itself, menu isn't inflated to re-initiated Activity or Keyboard isn't allow to enter something to text area) but in previous versions this flag re-initiate's the Activity, and removed from back stack. Please review this link了解更多详情。
在 Android 4.4 及更高版本中,当在 Activity 创建中使用 FLAG_ACTIVITY_REORDER_TO_FRONT
标志时,应用程序会出现异常。主要问题是,有时 Activity 会冻结状态,当导航到另一个 activity 键盘时无法正常工作(显示键盘但用户无法在文本区域输入任何内容) ,没有展开菜单,或者应用程序导航到最小化状态。
我认为这个问题与 back-stack 和 activity 的流程有关,当启动器 activity(在我的应用程序中,SplashScreenActivity 是一个启动器)完成时,然后 sub-activity 在使用 FLAG_ACTIVITY_REORDER_TO_FRONT
到 re-initiate 之前的 Activity 时会导致一些问题。所以在这种情况下,不要杀死启动器或 parent activity 并使用 startActivityForResult(childAcivityIntent, requestcode)
启动下一个 activity,并杀死 parent activity onActivityResult
通话时间。还要记住不要在 child 和 parent 活动中使用 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();
}
我也遇到了同样的问题:
当我通过设置子 activity 的 Intent
标志 FLAG_ACTIVITY_REORDER_TO_FRONT
回到父 Activity
时,有时应用程序在 Nexus5 中使用 Android Marshmallow 最小化。
折腾了3天,终于把activity
的Launch模式改成了Single Task
。
现在我的应用程序运行正常。