Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android LocationManager、粗略数据和电池消耗_Java_Android_Location_Battery - Fatal编程技术网

Java Android LocationManager、粗略数据和电池消耗

Java Android LocationManager、粗略数据和电池消耗,java,android,location,battery,Java,Android,Location,Battery,我需要的只是Android上某个位置的粗略数据,所以在获取数据时,主要考虑的是保持电池电量。我认为这个代码: LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10 * 60 * 1000, 10

我需要的只是Android上某个位置的粗略数据,所以在获取数据时,主要考虑的是保持电池电量。我认为这个代码:

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10 * 60 * 1000, 1000, this);

这是正确的策略吗?还是最好每10分钟检查一次新位置并禁用listener,这似乎更接近谷歌网站上提出的代码,尽管对我来说不太合乎逻辑?

而不是提到使用提供商名称获取提供商。并且,使用标准来设置您的需求

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
final String bestProvider = manager.getBestProvider(criteria, true);
最后呢,

locationManager.requestLocationUpdates(bestProvider, 0,1000, this);

或者,您可以在完成任务后立即请求单位置更新或禁用侦听器

好的,这很有用,但它提供了我所要求的信息以外的其他信息-如果您始终需要数据,最好不要禁用侦听器,还是最好每10分钟打开和关闭一次?设备上的每个芯片组都需要时间来初始化。如果请求之间的间隔很长
removeUpdates
肯定是个好主意我猜我的问题并不完美,我编辑了(因此第一个参数现在是10*60*1000)。这样做更好还是禁用侦听器更好?