1

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

这是该服务的一些代码。

@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。

这段代码可以正常工作一段时间,然后突然停止。有人对为什么有一些想法吗?

谢谢。

4

2 回答 2

0

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

于 2016-02-16T12:40:44.730 回答
0

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

于 2018-04-03T13:15:01.453 回答