android - 在应用程序处于非 Activity 状态时处理 ActivityRecognition.API Intent

标签 android design-patterns google-play-services activity-recognition

我正在寻找实现这个的通用设计:

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

问题在于,在新的 ActivityRecognition API 设计中,它与 GooglePlayServices 客户端相关联,例如:

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

从逻辑上讲,如果创建它的 Activity 或服务被销毁,则此客户端会消失,从而导致任何 ActivityRecognition 更新丢失。

显然,如果我让服务(或 Activity )保持 Activity 状态,并且持续保持用于启动 ActivityRecognition API 的 GooglePlayServices 客户端(在本例中为 myGoogleApiClient),显然一切都会顺利……但这就是我想要的避免……

如何实现?

最佳答案

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

如果 API 仅在适当的时间自动唤醒,则更有效的解决方案是尝试使用广播接收器。如果您要求设备保持唤醒状态,您应该查看 https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

关于android - 在应用程序处于非 Activity 状态时处理 ActivityRecognition.API Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883542/

相关文章:

android - 如何使用intent Android绘制路线图

Android JDBC连接导致ctahttp异常

c# - 在派生类中添加属性

java - Facade 模式 - 返回原始对象或修改后的原始对象

android - 没有 Google 帐户的 GCM 的 API 级别是多少?

java - Android Java IOException 从文件描述符/输入流读取失败 EBADF(错误文件号)

android - 进度条在 API 23 上不起作用或不可见

c# - 默认策略。策略模式 C#

java - 导入 Google Play 服务导致 DexIndexOverflowException

android - 谷歌认证版本与谷歌地图冲突