我正在处理Activity Recognition API,试图让它在后台运行。 所以我已经提供了一个连接到Play服务的服务,并且一直都很活跃。当服务被销毁并再次创建时,我正在举杯祝酒。问题是,一段时间后,即使服务正在运行,它也会停止检测活动。
以下是该服务的部分代码。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
buildGoogleClient();
return START_STICKY;
}
private void buildGoogleClient()
{
mGoogleApiClientActivityDetection = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(ActivityRecognition.API)
.build();
mGoogleApiClientActivityDetection.connect();
}
@Override
public void onConnected(Bundle bundle)
{
if (mGoogleApiClientActivityDetection.isConnected() && detectionConnectionSet == false)
{
detectionConnectionSet = true;
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
mGoogleApiClientActivityDetection,
Constants.ACTIVITY_DETECTION_INTERVAL_IN_MILLISECONDS,
PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
}
}
我也覆盖onConnectionSuspended& onConnectionFailed,如果没有连接,我重新连接。
这段代码运行良好一段时间,然后它突然停止了。 任何人都有一些想法为什么?
感谢。
答案 0 :(得分:0)
您使用的是Intent Service还是普通服务。此外,您还必须创建一个新类并将其扩展到WakeFulBroadcastReiever并在清单中执行相同操作,以便在设备启动后立即启动服务。
答案 1 :(得分:0)
原来这是一些电话供应商的积极任务管理。