【问题标题】:Reuse the Activity, without re-creating it重用 Activity,无需重新创建它
【发布时间】:2017-06-15 19:23:31
【问题描述】:

我正在为学校制作 Android 应用。

第一个活动是学生,其中包含一个由 3 个片段组成的 ViewPager。此活动的加载成本很高,因为它包含 3 个片段。

第一个片段包含游戏的 ListView

第二个片段包含一个卡通列表视图

3rd Fragment 包含一个 ListView 的测试(ListView 只包含测试的标题)。

现在在 Test 片段上单击测试(显示在列表视图中)一个新的 ShowTest Activity 已打开,它显示了完整的测试。

一切正常。

这是 TestFragment 中启动 ShowTest Activity 的代码

test.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Intent it = new Intent(getActivity(), ShowTest.class);
            startActivity(it);
        }
    });

在 ShowTest Activity 中我只是调用了 finish();

public void onBackPressed() {
    this.finish();
}

但在 ShowTest 中,当调用 onBackpressed() 时 Student 活动会重新创建(片段中的所有内容都会重新加载)。我不希望第二次创建此活动。因为它的加载成本很高。

这两个链接对我没有帮助

Open Info Activity without closing Main Activity

Android - Relaunching an activity without having to re-create it

我们将不胜感激。

谢谢(已编辑)

【问题讨论】:

  • 这取决于您如何开始您的活动以及代码的相关部分在哪里。例如,如果您完成活动并进行下一个活动,然后从该活动返回到第一个活动,则它会被重新创建。如果你没有完成,通常活动会留在后台。然后重要的是所有代码在哪里......如果你初始化 onResume() 中的所有内容,那么所有内容都将再次完成。你一定要阅读活动生命周期:developer.android.com/guide/components/activities/…
  • 没有办法保证这一点。如果 Android 检测到内存问题,它将关闭不在前台的活动,并在以后需要时重新创建它们。无法覆盖该行为(事实上,唯一的选择是始终打开它以进行测试)。
  • 发布用于启动 ShowTestActivity 的代码、onBackPressed() 方法和任何其他相关代码。
  • @MateusGondim 我编辑了我的问题。
  • @Opiatefuchs 我没有完成学生活动,也没有初始化任何东西 onResume()

标签: android android-fragments android-intent


【解决方案1】:

您可能会在其他活动开始时调用finish()。不要调用它并在没有完成()的情况下开始活动。

【讨论】:

  • 没有。我没有在活动开始时调用“finish()”。仍然很好奇为什么会发生这种情况
【解决方案2】:

对不起,我错了

在 Android 清单中

<activity
    android:name="plan9.naseemdev.muhammadtaimoor.naseem.Student"
    android:configChanges="orientation|screenSize"
    android:noHistory="true" />

由于' android:noHistory="true" ' 学生活动每次都在重新创造。 删除此行后,它对我有用。

【讨论】:

    【解决方案3】:

    分享您的代码,以便我可以进一步提供帮助。 另外请检查您是否正确初始化了寻呼机适配器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 2022-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多