【问题标题】:Data update in offline app离线应用中的数据更新
【发布时间】:2012-03-20 21:56:11
【问题描述】:

我正在为旅游业开发一款 Android 应用。所有数据都可以离线使用,无需任何互联网连接。该应用程序包含一个地图,其中数据也仅在离线模式下可用。因此,我为此使用 Openstreetmap 和 osmdroid,所有需要的地图数据都包含在应用程序文件中。唯一可能连接到互联网的活动是在启动应用程序时检查是否有新数据可用并最终将新数据下载到应用程序文件夹中。

我添加了视图的框图:

我的问题是,我怎样才能只使第一个活动,即启动活动(图像中的红色块)连接到互联网,并确保所有其他活动在任何情况下都无法连接到互联网。因为当用户滚动出集成地图的区域时,我与 Openstreetmap 的活动可能无法连接到 Internet 以下载新的地图图块,这一点非常重要。它并不是为了完全关闭整个 Android 设备的网络连接,所以它也对其他应用程序关闭。

提前非常感谢!

【问题讨论】:

    标签: android android-activity android-internet


    【解决方案1】:

    如果你声明

       <uses-permission /> 
    

    对于清单中的 Internet,则适用于所有活动。您不能限制外部库的功能。所以尽量使用受信任的库。

    【讨论】:

      【解决方案2】:

      感谢您的回复!

      但我已经解决了我自己的问题。

      我知道我可以使用 .这确实是我的问题,如果所需的地图图块尚未本地存储,那么带有地图的屏幕也会从网络下载新数据。

      我终于找到了在osmdroid中选择地图瓦片来源的方法:本地存储瓦片或从互联网下载它们。 在 osmdroid-android-xxx.jar 的 OpenStreetMapTilesOverlay 类中,您可以使用此方法设置图块源:

      /**
           * Set whether to use the network connection if it's available.
           * @param aMode
           * if true use the network connection if it's available.
           * if false don't use the network connection even if it's available.
           */
          public void setUseDataConnection(boolean aMode) {
                  mTileProvider.setUseDataConnection(aMode);
          }
      

      所以,我实现了这段代码,只使用离线地图图块:

       mapView.setUseDataConnection(false);
      

      mapView 是我的 OSM MapView

      祝你发展顺利!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 2011-09-10
        • 2012-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多