【问题标题】:LocationManager updates every minute, consuming a lot of battery powerLocationManager每分钟更新一次,消​​耗大量电池电量
【发布时间】: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


【解决方案1】:

我使用了这里回答的技术:Best way to constantly monitor location

【讨论】:

    【解决方案2】:

    您可以停止监听位置更新

    // Remove the listener you previously added
    m.removeUpdates(locationListener);
    

    可能你看过这篇文章,如果你没有在这里告诉它

    http://developer.android.com/guide/topics/location/obtaining-user-location.html

    【讨论】:

    • 我不想停止收听更新。我希望它们以电池友好的方式少发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多