Android ActivityRecognition API停止在后台运行

时间:2015-06-15 17:34:23

标签: android service background google-play-services activity-recognition

我正在处理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,如果没有连接,我重新连接。

这段代码运行良好一段时间,然后它突然停止了。 任何人都有一些想法为什么?

感谢。

2 个答案:

答案 0 :(得分:0)

您使用的是Intent Service还是普通服务。此外,您还必须创建一个新类并将其扩展到WakeFulBroadcastReiever并在清单中执行相同操作,以便在设备启动后立即启动服务。

答案 1 :(得分:0)

原来这是一些电话供应商的积极任务管理。