首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓应用优化避免OutOfMemoryError

安卓应用优化避免OutOfMemoryError
EN

Stack Overflow用户
提问于 2011-12-09 00:53:27
回答 2查看 340关注 0票数 0

我有一个Android 13mb的应用程序,它显示离线/缓存地图从SD卡。我使用的是mapnik mapsource,有33000个地图瓦片。

代码语言:javascript
复制
 m_mapView.setTileSource(TileSourceFactory.MAPNIK);

问题:

查看地图时,加载地图瓦片需要一些时间。此外,当滚动时,它将冻结约2-3秒,然后它将强制关闭。我可以使用try catch吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-09 01:49:06

如果这些图像很大或很多,那么您可能没有足够的内存来一次将它们全部保存在内存中。您必须找到一种智能地加载和卸载tiles的方法,以适应可用堆空间,即32MB。

然而,我有另一个猜测:您是否在不再需要的Bitmap对象上调用recycle()?如果不这样做,即使有足够的内存,也会很快得到这个错误。

票数 0
EN

Stack Overflow用户

发布于 2011-12-09 01:05:12

我不知道磁贴到底是如何显示的,但这里有一些要点:

  1. 确保您只在需要时才将内容保存在内存中。安卓的堆大小在16-32MB之间变化,当它耗尽的时候,你的应用程序就会崩溃。
  2. 使用WeakReferences -WeakReferences,每次运行缓慢的时候,你都会从SD卡加载东西。请确保在单独的线程上执行此操作。
  3. 如果可能,请使用NDK。原生代码没有Java环境对安卓系统提出的严格要求。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8434613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档