【问题标题】:Android app data storage keeps increasingAndroid 应用程序数据存储量不断增加
【发布时间】:2015-12-13 22:55:26
【问题描述】:

我正在开发一个 Android 应用程序,它基本上会加载新闻文章列表并在用户点击时在 web 视图中打开它们。

我想知道的是,当我在“设置->应用程序->管理应用程序”中查看我的应用程序详细信息时,总存储大小不断增加。特别是,数据存储大小正在增加。当然,应用程序的大小是固定的。

据我所知,共享首选项占用了数据存储空间。我不知道还有什么。在我的应用中,我只有 1 个复选框首选项和一个包含 4 个项目的列表首选项。

我还实现了onSaveInstanceState() 方法,在该方法中我只保存一个int 值并在onCreate() 期间再次读取。

增加的数据存储大小是正常的还是我遗漏了什么?也许我应该在我的代码中进行一些内存使用清理?

顺便说一句,由于 webview 缓存了一些图像,我的应用程序有相当大的缓存大小,但我不知道是什么让数据存储不断增加。

【问题讨论】:

  • 它是否以线性速率增加?还是偶尔增加?即如果你去一个网站并点击刷新它会增加吗?如果您访问 100 个网站,它会增加 100 个还是会波动。尝试弄清楚您是否泄漏了某些东西或它的 chrome 缓存。缓存应该是零星的并且可以测试。泄漏应该更加稳定。
  • 我正在使用它来查看数据大小如何根据我的操作而变化。截至目前,我看到的是当我在 webview 上加载页面时它会增加。但并非总是如此。我的 webview 上没有刷新选项,所以我无法尝试。缓存不应该进入缓存大小(现在相当大)而不是数据大小吗?
  • 这里是大小如何变化的示例。我基本上为前 5 个数据加载了相同的页面(一个小的简单文章站点)。最后一篇,我打开了另一篇文章(一个更大/更复杂的网站),数据的变化更大。数据缓存 520KB 5.53MB; 536KB 5.58MB; 540KB 5.60MB; 548KB 5.62MB; 552KB 5.64MB; 568KB 6.16MB;
  • 你可以试试turning off the cache in the WebView看看有没有帮助。
  • @dmon 如果 webview 正在缓存网站,它真的应该占用数据存储大小而不仅仅是缓存大小吗?我有点不想关闭缓存因为我希望它能够快速加载网站。我如何确定导致数据大小增加的是 webview 缓存站点,而不是像上面提到的 ntkachov 这样的泄漏。

标签: android sharedpreferences storage


【解决方案1】:

我知道这已经超过 2 年了,但它可能对其他人有用。我发现问题出在WebView 而不是SharedPreferences 我遇到了同样的问题,并通过以这种方式覆盖onPause() 方法解决了:

private WebView wv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    wv = new WebView(this);
    setContentView(wv);
    wv.loadUrl("http://www.stackoverflow.com");
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    wv.clearCache(true);
}

clearCache 方法采用布尔参数,可让您指定是否要包含 WebView 存储的磁盘文件。如果您启用它,您的数据使用量将显着减少。希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 2015-11-11
    相关资源
    最近更新 更多