6

Android LocationManager 在获取定位时是否有时会使用数兆字节的互联网数据?如果是这样,在什么情况下?即使使用 LocationManager 的应用程序没有明确的访问互联网权限,它也会发生吗?

我问这个是因为我最近注意到“Android OS”使用的互联网数据(如我的带有 Android 4.0.4 的三星 Galaxy Note 上的“设置”->“数据使用”屏幕所报告的那样)有时每天 10 兆字节或更多。实验表明,仅当我运行我编写的应用程序并使用位置管理器提供的 GPS 位置数据时才会使用这种数据。当此应用未运行“Android OS”时,每天仅使用几千字节的数据。

应用清单中的唯一权限是“android.permission.ACCESS_FINE_LOCATION”和“android.permission.WRITE_EXTERNAL_STORAGE”。没有访问互联网的权限。

Activity 的 onStart() 方法包含以下代码:

         if (!mapview .ignoreGPS ) {
           lm.requestLocationUpdates(LocationManager. GPS_PROVIDER , gpsMinTime , gpsMinDistance , this );
    }     

当忽略 GPS 标志关闭时,会调用类似的代码。

还有一个包含代码的 gotoLastLocation() 方法:

          Location l = lm.getLastKnownLocation(LocationManager. GPS_PROVIDER );

           if (l == null ) {
                 l = lm .getLastKnownLocation(LocationManager. NETWORK_PROVIDER);
          }

这个方法很少被调用,当ignoreGPS标志被关闭或者当用户选择一个菜单选项去最后一个已知位置时。

除了这个很少被调用的方法之外,没有提到“NETWORK_PROVIDER”。

GPS_PROVIDER 是否默认使用“辅助 GPS”?如果是这样,这可以使用数兆字节的数据吗?即使没有互联网许可?

如果 GPS_PROVIDER 无法从 GPS 信号中获得修复,LocationManager 默认使用手机网络吗?即使应用没有网络权限?这会被电话提供商算作互联网数据访问吗?

4

1 回答 1

1

不,从来没有,下载辅助数据的 SUPL 协议只使用几千字节的数据。即使您在白天经常运行它,与浏览器使用量相比也不会太多。

Google 有时会在使用NETWORK_PROVIDER. 但即使这样也不算多。

您可以尝试杀死所有后台进程或更好地卸载不需要的应用程序吗?

我最好的猜测是,您可能正在使用MapView下载地图图块和卫星图像的工具——这些数据很重

于 2012-09-25T14:49:55.130 回答