【无人机学习之osmdroid 】OutOfMemoryError loading bitmap

█ 【无人机学习之osmdroid 】OutOfMemoryError loading bitmap


█ 系列文章目录

提示:这里是收集了osmdroid 的相关文章

  • 【无人机学习之osmdroid 】点击事件和InfoWindow弹窗

█ 文章目录

  • █ 【无人机学习之osmdroid 】OutOfMemoryError loading bitmap
  • █ 系列文章目录
  • █ 文章目录
  • █ 读前说明
  • █ UI
  • █ 遇到的问题
  • █ 问题解决
  • █ 注意点
  • █ 相关资料
  • █ 免责声明


█ 读前说明

  • 本文通过学习别人写demo,学习一些课件,参考一些博客,学习相关知识,如有涉及侵权请告知
  • 本文可能只简单罗列了一些相关的代码实现过程,复制了一些大神的高论,如内容有误请自行辨别
  • 涉及到的逻辑以及说明可能只做了简单的介绍,主要当做笔记,了解过程而已,如有不同看法,欢迎下方评论
  • 官方源码:码云gitee、github
  • 补充库及demo:OSMBonusPack project 地理编码Geocoding,导航,兴趣点POI,聚合点Cluster等
  • 用法:wiki/维基百科/网络共笔

█ UI

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第1张图片

█ 遇到的问题

  1. 使用模拟器遇到的问题:OutOfMemoryError loading bitmap
	2021-03-10 09:13:57.112 6710-7019/com.***.debug E/OsmDroid: OutOfMemoryError loading bitmap
	2021-03-10 09:13:57.860 6710-7019/com.***.debug E/OsmDroid: Error downloading MapTile: /14/13494/6210
    java.lang.OutOfMemoryError: Failed to allocate a 16396 byte allocation with 15688 free bytes and 15KB until OOM
        at java.util.Arrays.copyOf(Arrays.java:3256)
        at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
        at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
        at org.osmdroid.tileprovider.modules.SqlTileWriter.saveFile(SqlTileWriter.java:142)
        at org.osmdroid.tileprovider.modules.TileDownloader.downloadTile(TileDownloader.java:165)
        at org.osmdroid.tileprovider.modules.MapTileDownloader$TileLoader.downloadTile(MapTileDownloader.java:200)
        at org.osmdroid.tileprovider.modules.MapTileDownloader$TileLoader.loadTile(MapTileDownloader.java:232)
        at org.osmdroid.tileprovider.MapTilePreCache.search(MapTilePreCache.java:125)
        at org.osmdroid.tileprovider.MapTilePreCache.access$100(MapTilePreCache.java:30)
        at org.osmdroid.tileprovider.MapTilePreCache$1.run(MapTilePreCache.java:41)
        at org.osmdroid.util.GarbageCollector$1.run(GarbageCollector.java:31)
        at java.lang.Thread.run(Thread.java:761)
 		。。。。。。
	2021-03-10 09:14:43.070 6710-7021/com.***.debug E/OsmDroid: OutOfMemoryError loading bitmap
    2021-03-10 09:14:43.778 6710-7021/com.***.debug E/OsmDroid: Error downloading MapTile: /15/26989/12419
    java.lang.OutOfMemoryError: Failed to allocate a 32780 byte allocation with 13464 free bytes and 13KB until OOM
        at java.util.Arrays.copyOf(Arrays.java:3256)
        at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
        at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
        at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
        at org.osmdroid.tileprovider.modules.SqlTileWriter.saveFile(SqlTileWriter.java:142)
        at org.osmdroid.tileprovider.modules.TileDownloader.downloadTile(TileDownloader.java:165)
        at org.osmdroid.tileprovider.modules.MapTileDownloader$TileLoader.downloadTile(MapTileDownloader.java:200)
        at org.osmdroid.tileprovider.modules.MapTileDownloader$TileLoader.loadTile(MapTileDownloader.java:232)
        at org.osmdroid.tileprovider.MapTilePreCache.search(MapTilePreCache.java:125)
        at org.osmdroid.tileprovider.MapTilePreCache.access$100(MapTilePreCache.java:30)
        at org.osmdroid.tileprovider.MapTilePreCache$1.run(MapTilePreCache.java:41)
        at org.osmdroid.util.GarbageCollector$1.run(GarbageCollector.java:31)
        at java.lang.Thread.run(Thread.java:761)
        。。。。。。
        闪退		

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第2张图片

  1. 使用【真机1】遇到的问题:没有日志,直接关闭Activity,查看profiler
    刚启动:
    【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第3张图片

地图进行多次放大缩小操作:

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第4张图片
【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第5张图片

  1. 使用【真机2】遇到的问题:没有日志,直接关闭Activity,查看profiler

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第6张图片
【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第7张图片

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第8张图片

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第9张图片

█ 问题解决

  1. 原来使用的库是:
 implementation 'org.osmdroid:osmdroid-android:6.1.0'
  1. 最新的稳定库是:
 implementation 'org.osmdroid:osmdroid-android:6.1.10'

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第10张图片
3. 看下6.1.0都修改了什么:6.1.0修改日志
【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第11张图片
4. 看下6.1.1都修改了什么:6.1.1修改日志

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第12张图片

  1. 升级到6.1.1测试下结果:Native 基本在50-70之间波动,稳定在58.4M左右,内存有进行回收。

【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第13张图片
【无人机学习之osmdroid 】OutOfMemoryError loading bitmap_第14张图片

  1. 当然最后肯定要用最新稳定版本,避免还有其他的问题存在。

█ 注意点

  1. 出现问题时,可以换真机测试,看下效果

  2. 使用的库,最好使用最新稳定版的库

█ 相关资料

提示:这里是参考的相关文章

  1. 2017-10-20 二、osmdroid地图资源_u013896312的博客-CSDN博客 Android开发之osmdroid - Tiny小祥
  2. 2016-06-13 瓦片地图的前世今生 - 极海·GeoHey -知乎
  3. 2019-04-25 瓦片地图加载框架——TiledMapView(支持谷歌地图(GoogleTileLayer),天地图(TiandituTileLayer),自定义瓦片地图)_走向远方-CSDN博客
  4. 2015-01-16 Android地图开发之地图的选择 - John-Chen - 博客园
  5. 2018-12-25) Osmdroid API功能介绍4----地图缓存和下载_yywcsdn的博客-CSDN博客
  6. 2014-02-17 osmdroid基础教程(1)_free logic的专栏-CSDN博客
  7. 2013-08-03 Android地图开发之OpenStreetMap基础教程_其实并不难,是你太悲观-CSDN博客_openstreetmap使用教程
  8. 2017-05-01 android 开源库osmdroid绘制点线面(比例尺,缩小放大,导航图标等)_mmsx-CSDN博客
  9. 缩放适配/定位边界:android - OSMDroid: zooming to show the whole PathOverlay - Stack Overflow
  10. 缩放适配/定位边界:OSMdroid bounds marker | 易学教程、 带图 - stackoverflow

█ 免责声明

博主分享的所有文章内容,部分参考网上教程,引用大神高论,部分亲身实践,记下笔录,内容可能存在诸多不实之处,还望海涵,本内容仅供学习研究使用,切勿用于商业用途,若您是部分内容的作者,不喜欢此内容被分享出来,可联系博主说明相关情况通知删除,感谢您的理解与支持!

提示:转载请注明出处:
https://blog.csdn.net/ljb568838953/article/details/114625262

你可能感兴趣的:(无人机学习)