当前位置: 首页 > 知识库问答 >
问题:

处理活动识别。应用程序处于非活动状态时的API意图

刘京
2023-03-14

我正在寻找实现这一点的一般设计:

我想注册到ActivityRecognition API,以便在此API不时调用的IntentService中接收定期更新,而我的应用程序中的所有其他内容都是完全非活动的(这里的目标是避免耗尽设备上过多的电池电量)。

问题是,通过新的ActivityRecognition API设计,它与GooglePlayServices客户端绑定,例如:

ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
    myGoogleApiClient, 
    3000L, 
    myActivityRecognitionPendingIntent);

从逻辑上讲,如果创建该客户端的活动或服务被销毁,导致任何ActivityRecognition更新丢失,则该客户端将消失。

显然,如果我保持服务(或活动)活着,不断持有用于启动Activity认可API(本例中为myGoogleApiClient)的GooglePlayServices客户端,一切都可以顺利进行...但这是我想要避免的...

如何做到这一点?

共有3个答案

曹超
2023-03-14

改用活动转换API。

庾奇思
2023-03-14

经过进一步测试,并使用更新的GooglePlayServices(9.0.2),这看起来是一项不可能完成的任务。我通过创建一个始终位于后台的粘性服务来解决这个问题,该服务只做一件事:维护GoogleAppClient连接。希望这不会消耗太多的能量…

如果不这样做,杀死正在处理的GoogleAppClient会导致奇怪和不一致的错误和行为,这取决于Android版本和运行它的设备:30%的时间它工作正常,否则应用程序会崩溃,因此绝对不可靠。

最后,看起来GooglePlayServices是这样设计的:我们需要通过后台活动或服务保持与GoogleApiClient的连接,即使这听起来有点奇怪,也可能有一些很好的理由这样做。

林龙野
2023-03-14

您可以查看警报管理器和权衡,请参阅https://developer.android.com/training/scheduling/alarms.html

如果API只在适当的时候自动唤醒,一个更有效的解决方案是尝试广播接收器。如果您要求设备保持清醒,为什么要处理,您应该调查https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

 类似资料:
  • 那么我应该做些什么来实现这个目标呢?如有任何帮助/线索,请提前感谢

  • 我正在Android上使用Firebase云消息。 当应用程序位于前台时,我可以成功接收通知和数据消息 文档说明,如果在应用程序处于后台时收到通知消息,则Firebase将代表应用程序向系统托盘发送通知。这对我不起作用 如果发送了数据消息且应用程序位于后台,则会成功调用onMessageReceived方法 最麻烦的情况是,我强制停止应用程序,然后尝试发送通知或数据消息。在这种情况下,不会调用on

  • 问题内容: 从MDN for NodeList: 在某些情况下,NodeList是一个实时集合,这意味着DOM中的更改会反映在集合中。例如,Node.childNodes处于活动状态: 在其他情况下,NodeList是静态集合,这意味着DOM中的任何后续更改都不会影响集合的内容。document.querySelectorAll返回一个静态NodeList。 所以....有点烦!是否有任何关于哪些

  • 问题内容: 是否有可能使MySQL中的行处于非活动状态?因此,该行不再用于查询结果吗?我的客户希望保留删除的成员在数据库中的存在,但是我不想编辑所有查询以检查该成员是否被删除。 还是有一种简单的方法将整个行数据移动到另一个“非活动”表中? 问题答案: 您可以重命名当前表,在其中创建“ deleted”列,然后创建一个与当前表同名的视图,并选择“ deleted = 0”。这样,您不必更改所有查询。

  • 我在玩QUARKUS,我试图创建摄取服务,它将数据发送到kafka或另一个RESTendpoint。我已经向项目添加了“夸克斯-小黑麦-反应性-消息传递-Kafka”和“夸克斯-反应性-消息传递-超文本传输协议”依赖项。我想只有一个特定的管道,即超文本传输协议- 现在的问题是,即使我有Kafka连接器注释在我的application.propertues,Kafka的健康检查仍然运行,并显示Kaf

  • 在最近的Google Play服务更新中,有人对活动识别API有问题吗? 我已经在一个应用程序中实现了它。在5.0更新之前,它工作得非常好。现在,当用户走路或坐着不动时,它会在车内返回:/ 并且根本不返回、或。 我应该知道的活动识别API是否有任何更改? 如果你需要更多的细节,请告诉我。