pre*_*bgg 6 gps android locationmanager
在获得定位时,Android LocationManager有时会使用数兆字节的互联网数据吗?如果是这样,在什么情况下?即使使用LocationManager的应用程序没有明确的访问权限的权限,它是否会发生?
我问这个是因为我最近注意到"Android OS"使用的互联网数据(我在Samsung Galaxy Note with Android 4.0.4上的设置 - >"数据使用"屏幕上报告)有时每天10兆字节或更多.实验表明,只有当我运行我编写的应用程序并使用位置管理器提供的GPS位置数据时才会出现此数据使用情况.当此应用未运行时,"Android OS"每天仅使用几千字节的数据.
应用程序清单中的唯一权限是"android.permission.ACCESS_FINE_LOCATION"和"android.permission.WRITE_EXTERNAL_STORAGE".没有互联网访问权限.
活动的onStart()方法包含代码:
if (!mapview .ignoreGPS ) {
lm.requestLocationUpdates(LocationManager. GPS_PROVIDER , gpsMinTime , gpsMinDistance , this );
}
Run Code Online (Sandbox Code Playgroud)
切换ignoreGPS标志时会调用类似的代码.
还有一个包含代码的gotoLastLocation()方法:
Location l = lm.getLastKnownLocation(LocationManager. GPS_PROVIDER );
if (l == null ) {
l = lm .getLastKnownLocation(LocationManager. NETWORK_PROVIDER);
}
Run Code Online (Sandbox Code Playgroud)
当忽略ignoreGPS标志或用户选择菜单选项以转到最后的已知位置时,此方法很少被调用.
除了这种很少被称为方法之外,没有引用"NETWORK_PROVIDER".
GPS_PROVIDER默认使用"辅助GPS"吗?如果是这样,这可能会使用数兆字节的数据吗?即使没有互联网许可?
如果GPS_PROVIDER无法通过GPS信号进行修复,则LocationManager默认使用手机网络吗?即使应用程序没有网络权限?这会被电话提供商视为互联网数据访问吗?
不,从来没有,下载辅助数据的 SUPL 协议仅使用几千字节的数据。即使您在白天经常运行它,与浏览器的使用相比也不会太多。
当使用NETWORK_PROVIDER. 但即便如此也还不够。
您可以尝试终止所有后台进程或更好地卸载不需要的应用程序吗?
我最好的猜测是,您可能正在使用MapView下载地图图块和卫星图像的工具 - 这些数据很重