【发布时间】:2011-05-01 04:30:22
【问题描述】:
我有一些类似于以下的代码:
LocationManager m = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
Criteria c = new Criteria();
c.setAccuracy(Criteria.ACCURACY_COARSE);
String provider = m.getBestProvider(c, true);
Intent i = new Intent(context, LocationReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
m.requestLocationUpdates(provider, 900000, 0, pi);
这是接收者的清单条目:
<receiver android:name=".LocationReceiver" />
大多数情况下它运行良好,并且每 15 分钟更新一次。但是,有时它每分钟更新一次,并消耗大量电池电量。我在这里做错了什么?
编辑:LocationManager 不应该像这样用于后台操作吗?
【问题讨论】:
-
那里的解决方案根本没有帮助。如果 LocationManager 不断唤醒手机以每分钟更新一次,即使我检查更新时间并将其与上一次进行比较,它仍然会耗尽电池电量。
-
我注意到的是,在包括姜饼在内的 android 版本中,位置管理器会默认每隔一秒或几秒更新一次。在运行 MIUI 风味的冰淇淋三明治时,默认值为 1 分钟,但是:当我运行导航(前景或背景)或 googlemaps(前景)时,我每隔一秒左右就会得到更新。因此,您可能会受到其他应用程序的干扰。您是否检查过当前没有其他应用程序正在向 locationmanager 请求自己的更新?如果是,那么您的应用就可以了。
标签: android