我正在尝试使用 Google Activity Recognition API,并且仅在活动更改或大约每 30 分钟(如果活动不更改,则 +- 10 分钟或更长时间)时获得结果。相反,当我调用下面的代码时,我经常在我的 Activity Recognition 中得到结果IntentService
,就像每分钟一样:
ActivityRecognition
.ActivityRecognitionApi
.requestActivityUpdates(mGoogleApiClient, 60000 * 30, getSensingServicePendingIntent())
.setResultCallback(this);
创建PendingIntent
对象的方法:
private PendingIntent getSensingServicePendingIntent(Integer userLabel) {
Intent i = new Intent(mContext, SenseDataIntentService.class);
return PendingIntent
.getService(mContext, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
}
获取方法GoogleApiClient
:
private GoogleApiClient buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(mContext)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
return mGoogleApiClient;
}
我知道官方文档是这样说的:
如果另一个应用程序也以更快的速度请求活动更新,则活动可能会比 detectionIntervalMillis 参数更频繁地接收。当活动检测服务接收到当前活动可能发生变化的信号时,它也可以更快地接收更新,例如,如果设备已经静止了很长时间,然后从手机充电器上拔下。
但我只是认为我太频繁地获得更新(即使活动没有改变)。任何解决方案,因为我想节省一些电池消耗。