【问题标题】:'FLAG_ACTIVITY_REORDER_TO_FRONT' in new flavors of Android OS(4.4 & later)'FLAG_ACTIVITY_REORDER_TO_FRONT' 在新版本的 Android 操作系统(4.4 及更高版本)中
【发布时间】:2015-07-09 11:43:57
【问题描述】:

最近,我遇到了重新启动已经在后台堆栈中的 Activity 的问题。标志FLAG_ACTIVITY_REORDER_TO_FRONT 是管理此问题的最佳解决方案。但在 Android 4.4 及更高版本中它不能正常工作(有时 Activity 视图被冻结或应用程序自身最小化,菜单不会膨胀以重新启动 Activity 或键盘不允许在文本区域输入内容)但在以前的版本这个标志重新启动的活动,并从后台堆栈中删除。详情请查看this link

【问题讨论】:

  • 请解释一下“效果不好”是什么意思。
  • @CommonsWare, FLAG_ACTIVITY_REORDER_TO_FRONT 对于重新启动已经在后台堆栈中的活动很有用。但在 4.4 及更高版本中,有时 Activity 视图将冻结状态或应用程序将自身最小化。这已报告给 Google。详情请参考“code.google.com/p/android/issues/detail?id=63570#c2”。

标签: android android-activity back-stack


【解决方案1】:

在 Android 4.4 及更高版本中,当在 Activity 创建中使用 FLAG_ACTIVITY_REORDER_TO_FRONT 标志时,应用程序会出现异常。主要问题是,有时活动会冻结状态,当导航到另一个活动时键盘工作不正常(显示键盘但用户无法在文本区域输入任何内容),没有膨胀菜单,或应用程序导航以最小化状态。

我认为这个问题与回栈和活动流有关,当启动器活动(在我的应用程序中,SplashScreenActivity 是一个启动器)完成时,子活动在使用时会导致一些问题FLAG_ACTIVITY_REORDER_TO_FRONT 重新启动之前的 Activity。所以在这种情况下,不要杀死启动器或父活动并使用startActivityForResult(childAcivityIntent, requestcode) 开始下一个活动,并在onActivityResult 调用时杀死父活动。还要记住不要在孩子和家长活动中使用singleInstancesingleTop 标志。

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();
}

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题:
    当我通过子活动设置Intent 标志FLAG_ACTIVITY_REORDER_TO_FRONT 回到父Activity 时,有时应用程序在带有Android Marshmallow 的Nexus5 中被最小化。

    苦苦挣扎了3天,终于把activity的Launch模式改成了Single Task

    现在我的应用程序运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      相关资源
      最近更新 更多