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 供应商的激进任务管理。
我正在处理 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 供应商的激进任务管理。