其他分享
首页 > 其他分享> > android-活动识别PendingIntent停止在深夜

android-活动识别PendingIntent停止在深夜

作者:互联网

我的应用程序会定期收集“活动识别”的“检测到的活动”数据.
我实现了exactly as described in the documentation,但间隔为一分钟.

只要用户登录-该应用程序已注册PendingIntent,即可接收来自Google Play进程的更新.

除非与我的问题有关,否则请不要告诉我有关每分钟请求更新引起的电池使用,网络和性能问题的信息:

问题:在某些设备中(发生率最高的是Nexus 5),在深夜的5-6个小时内-IntentService已停止运行.

我不确定,但是怀疑这与Google优化有关,重要的运动传感器未检测到进入活动识别机制的任何运动处于某种空闲模式,如可能发生的文档中所述.

对于我的应用而言,重要的是要知道大约每分钟的当前活动,即使它保持不变或长时间闲置也是如此.

我的问题:

>如何知道是否由于重要的运动传感器或其他任何原因而停止了定期活动识别?
>是否有一种方法可以强制Google Play流程执行活动更新而不会在不需要的时间内停止活动?

解决方法:

ActivityRecognitionClient.requestActivityUpdates

To conserve battery, activity reporting may stop when the device is ‘STILL’ for an extended period of time. It will resume once the device moves again. This only happens on devices that support the Sensor.TYPE_SIGNIFICANT_MOTION hardware.

如您所怀疑.没有理由不能使用the many data storage techniques保存最后一个值-一个简单的SharedPreference可能就足够了.

如果您是基于被调用的IntentService来直接触发操作(这是一个坏主意,因为其他应用程序可能会很快触发该操作),而不是仅根据活动的更改来触发操作,那么您应该将这些操作解耦,而不是set an alarm或触发periodic sync adapter进行任何操作您需要的特定时间间隔,从您收到的上一个活动中读取当前值.

标签:google-play-services,android-pendingintent,android-intentservice,activity-recogn
来源: https://codeday.me/bug/20191029/1960128.html