Android:减少BackStack内存使用量

时间:2017-07-13 07:50:10

标签: android performance

我正在创建一个应用程序,让用户通过相当长的线性数据捕获过程。每个活动都会导致需要输入数据的新主题的新活动。问题是某些活动有许多或大的位图,或许多imageButtons。当用户进入下一个活动时,当前的活动将被放置在后台堆栈中,并且内存不会被清理干净。

我正在考虑在用户进入下一个活动时调用'finish()'然后覆盖'onBackPressed()'以重新创建先前的活动,如果用户需要返回并在那里更改值。有没有更好的建议而不是这样做?

1 个答案:

答案 0 :(得分:1)

您考虑的解​​决方案肯定是在正确的轨道上。

我唯一的补充(当你需要回到它们时重新创建活动)是你不一定需要很多活动。

据我了解,您需要许多布局,每个布局都有相关资源。我要做的是:

  • 创建您的Stage数据类,创建布局,位图ID等等
  • 创建一个带有完整故事的List<Stage>
  • 创建一个知道如何从列表中显示一个阶段的活动,并遍历到其他阶段。在这里,您可以覆盖后退按钮以充当舞台遍历。

查看The Transitions Framework,了解在上述各个阶段之间进行浏览时如何为视图设置动画。如果您对至少部分视图使用相同的ID,它们将独立移动,而其他视图将淡出或淡出。