【问题标题】:Large memory use using content providers使用内容提供程序使用大量内存
【发布时间】:2011-05-12 22:02:51
【问题描述】:

我有一个应用程序可以监控多个内容提供商,例如日历、联系人列表、gmail 等

该应用程序运行良好,但我发现它最多可以使用大约 70mb 的内存。当我查看姜饼的内存使用时,应用程序本身使用了大约 6-7mb,其余的是内容提供者,例如目前:

Android Core App - 16mb - Provider Contacts 正在使用中

Gmail - 36mb - 提供商 Gmail 正在使用中

Calendar Storage 3.9mb - Provider Calendar 正在使用中

当我启动应用程序时,内存使用率很低,但是一旦我收到一个 gmail,内存就会猛增。 当我查询内容提供者时,我总是确保关闭所有打开的游标。

还有什么我应该关闭但我缺少的东西吗?我不想取消注册观察者,因为我仍然想监控未来的变化。

【问题讨论】:

  • 您不必担心因使用内容提供程序而产生的内存使用情况。它们由 android os 持有,这是你的操作系统的责任。
  • 我必须承认我没有注意到它会导致问题,但是当其他类似的应用程序使用几兆内存而我的内存使用 60/70mb 时,人们开始提问。

标签: android android-contentprovider


【解决方案1】:

似乎我的问题是在彼此之间使用多个游标。我不知道为什么,但是一旦我更改了代码以执行查询,将结果存储在集合中,关闭查询然后遍历该集合以执行较低级别的查询,我现在看不到真正的大内存用途。

按照代码的编写方式,我尽可能早地关闭每个游标,但这样查询会更快关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2020-11-23
    相关资源
    最近更新 更多