【问题标题】:Reusing activities in Android for a cyclical application为循环应用程序重用 Android 中的活动
【发布时间】:2016-01-31 02:00:08
【问题描述】:

在我正在开发的 Android 应用程序中,它将以非常循环/循环的方式使用。基本上,有一个主屏幕显示多个跟踪实体的状态网格。

用户可以通过按下按钮来启动一个流程,这会将他们带到一个新的活动中,在那里他们可以操作网格项目。

完成后,它会返回主屏幕,更新谁的网格以反映新的变化。在主屏幕的右侧,有一个用于操作网格的即将执行的任务列表,它们在完成时会被检查。

现在,就目前而言,当您四处检查这些任务、更改网格内容时,它只是在制作越来越多的活动并将它们添加到堆栈中。

什么是简单地重用这些活动的正确方法,或者至少从堆栈中删除旧的活动,以便它们可以从内存中释放并且“上一个”按钮不能返回到它们?

我实际上只是开始意图 - 我已经看到了这些标志,但只是对它们进行了刺伤,却一无所获。

Intent mainScreenIntent = new Intent(this, MainActivity.class);
startActivity(mainScreenIntent);

我确实有一个单例,其中包含我的网格数据模型,因此它们始终可以访问并且只创建一次。 GridViewAdapter 存储在其中的一个对象中,因此也不会重新创建它。只是活动。

【问题讨论】:

    标签: android user-interface android-activity android-lifecycle memory-efficient


    【解决方案1】:
    Intent i = new Intent(MyOldActivity.this, MyNewActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)
    startActivity(i);
    

    使用它,以便从 堆栈历史记录删除 OldActivity

    【讨论】:

    • 因此,假设用户在完成程序之前经历了 3 个不同的屏幕/活动。我希望堆栈历史保持完整,直到他们点击返回主要活动的最终“完成”按钮。我是否需要在中间保留对每个活动的引用,然后对它们全部调用完成?还是这里有更大的架构问题。
    【解决方案2】:

    如果您想摆脱旧的Activity,只需在启动新的Activity 后对旧的Activity 调用finish() 方法即可。

    Intent mainScreenIntent = new Intent(this, MainActivity.class);
    startActivity(mainScreenIntent);
    finish();
    

    【讨论】:

    • 感谢您的反馈!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    相关资源
    最近更新 更多