基于Android数据库的应用程序 - OOP方法,垃圾收集问题

时间:2012-01-26 17:09:52

标签: android oop object garbage-collection

我正在用android编写一个资金经理,迈出第一步。它将数据存储在SQLite数据库中,而我的方法主要是程序性的,而我正在创建它。

这意味着:当我创建图表或摘要时,它看起来像这样:

  1. 我创建了一个数据库游标
  2. 我迭代该光标以收集必要的数据
  3. 我将数据直接传递给我需要的元素(例如图表或列表视图)
  4. 嗯,这很有效,但我现在正在学习更多oop,我想重建我的应用程序。 我并不完全了解移动设备的内存限制,这就是我创建此主题的原因。

    我提出了两个想法。请告诉我,你认为哪一个更好(或者如果它完全错误的话,以某种方式纠正我的方法)。

    让我们像以前一样使用创建图表或列表视图的示例。现在我这样做:

    1. 我创建数据库游标。
    2. 我创建的对象数量等于我需要提供数据的记录数量。
    3. 我使用创建的对象将数据传递给图表或列表视图。
    4. 这将需要比我的程序方法更多的代码,但是使用它应该更加简单,并且代码将具有更多“专业”的外观(如果我错了,请纠正我)

      然而,我得到了这个困境。假设我正在根据表'费用'中的数据创建一组对象。我使用它们来展示我的某个活动的图表或列表视图。关闭活动后,我不再需要它们了。 我该怎么办才能让垃圾收集器扔掉它们。有什么特别的吗?(是的,我是垃圾收集器的新手)。

      还有第二个oop方法,但我知道它需要大量内存,我不确定它是否是一个好主意。所以,再回到这个例子:

      1. 我为每张桌子创建了游标
      2. 我创建了一组与表匹配的对象 - 基本上我将所有表传递给对象集以供进一步使用(如果需要,我会在一个带有一些进度条的线程中执行)
      3. 我在需要提供数据时随时使用创建的对象。
      4. 听起来很傻,是吧? 我不确定垃圾收集器什么时候会处理掉所有这些对象,如果最好一次垃圾邮件内存那么多的数据。

        感谢您对此提出任何意见。

1 个答案:

答案 0 :(得分:0)

两种解决方案都有效,但第一种解决方案更好,因为一旦它们超出范围,对象就会被标记为GC,这比将它们保留供以后使用时要早得多。一旦对象被GCed,他们占用的内存就变得可用。