Android ActivityRecognition API,在后台停止 运行

Android ActivityRecognition API, stops running in background

我正在处理 Activity 识别 API,试图在后台进行 运行。 所以我做了一个连接到 Play Services 的服务,并且一直处于活动状态。当服务被销毁并再次创建时,我正在祝酒。问题是一段时间后,即使服务处于 运行ning 状态,它也会停止检测活动。

这是该服务的一些代码。

@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,如果它没有连接我会重新连接。

此代码在一段时间内运行良好,然后突然停止。 有人知道为什么吗?

谢谢。

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

事实证明这是一些 phone 供应商的激进任务管理。