【问题标题】:multiple sub-activities that causes low memory导致内存不足的多个子活动
【发布时间】:2011-02-21 03:42:05
【问题描述】:

我的应用要求用户完成多页输入(注册过程)。 随着用户深入注册,我必须保持数据完整,直到用户点击“完成”。这个过程涉及到活动调用子活动和那些子活动调用另一个子活动。

流程是这样的:主 -> 子活动(注册的第 1 部分) -> 子活动(第 2 部分) -> 子活动(第 3 部分)。

这里的问题是,我收到来自 logcat 的内存不足警告,并且随着用户深入应用程序,各种进程被杀死。我已经尝试通过不在活动之间传递自定义对象而是将它们存储到 mysqllite 并在需要时检索它们来节省现有内存。还有一点要补充的是,我不是在处理图像,使用的控件只是文本视图、编辑视图和微调器。

我的问题是,当有多个子活动链接时,内存不足问题是否常见?我该如何去做以释放内存?自定义控件是否使用比预设控件更多的内存? (我的预感之一)

*编辑*我找到了内存不足问题的原因。它与子活动无关。罪魁祸首是我正在使用的自定义控件。我改用预设控件进行了测试,应用程序的整体性能得到了显着提高。我不再有内存不足警告,现在一切正常。

【问题讨论】:

    标签: android memory-management subactivity


    【解决方案1】:

    我认为子活动的内存问题并不常见。我使用了一个选项卡主机,每个选项卡有 5 个选项卡和 3-4 个活动,加上复杂的方法 http 调用和图像适配器,没有问题(这样activites 不调用 onDestroy 方法,而只是调用 onPause,然后调用 onResume)。尝试减少全局变量,例如。当您按下下一步按钮传递给其他活动或类似的东西时,只需引用视图并获取它们的数据,以便垃圾收集器收集垃圾。在调用 onPause 时删除一些引用,然后如果您再次需要它们,只需再次引用它们(可能在 onResume 上)

    【讨论】:

    • 感谢您的回复 DArkO。我也在考虑搞乱 onPause 和 onResume 。全局变量是指在不同活动中使用的“静态”变量?如果是,我根本不使用它们。我正在使用数据库临时存储它们并检索它们以供以后使用。
    • 使用数据库很好。如果对象可以在类之间共享,有时全局变量可以减少内存,但我所指的是在活动不活动时存储不需要的大对象(从缓存中清除位图,删除接收器,使对象无效)您可以在活动恢复时重新创建)。在处理数据时,我认为在 android 上必须使用数据库,因为 db 游标的好处是活动中的 managedQuery() 方法。如果有机会,请阅读更多内容。
    • 感谢您的指点,有机会我会阅读它们。 =)
    猜你喜欢
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多