我应该何时在Android应用中与Google Play服务断开连接?
作者:互联网
我的应用程序使用位置客户端来检索当前位置,并路由到用户在地图上放置的点.我是谷歌播放服务的新手,我想知道最佳做法何时应该断开我的LocationClient?
解决方法:
Android培训站点提供了两种连接和断开LocationClient的方法.在Retrieving the Current Location训练中,LocationClient在onCreate中初始化,connect()在onStart中调用,disconnect()在onStop中调用,如此(取自source code).
@Override
protected void onCreate(Bundle savedInstanceState) {
mLocationClient = new LocationClient(this, this, this);
}
@Override
public void onStop() {
mLocationClient.disconnect();
super.onStop();
}
@Override
public void onStart() {
super.onStart();
mLocationClient.connect();
}
然后,您可以选择启动或停止位置更新的时间和位置.
在Recognizing the User’s Current Activity中,每当用户想要请求或停止活动识别更新时,就初始化LocationClient.首先,调用connect(),然后在onConnected中,在调用disconnect()之后立即调用requestActivityUpdates或removeActivityUpdates.在示例source code中,有一个名为DetectionRequester的类,用于启动活动识别更新:
public void requestUpdates() {
getActivityRecognitionClient().connect();
}
@Override
private void onConnected() {
getActivityRecognitionClient().requestActivityUpdates(...);
getActivityRecognitionClient().disconnect();
}
@Override
public void onDisconnected() {
mActivityRecognitionClient = null;
}
private ActivityRecognitionClient getActivityRecognitionClient() {
if (mActivityRecognitionClient == null) {
mActivityRecognitionClient = new ActivityRecognitionClient(...);
}
return mActivityRecognitionClient;
}
还有另一个名为DetectionRemover的类似于停止活动识别更新的类.
另一种方法是在同一个类中同时使用这两个方法(requestUpdates和removeUpdates),如下所示:
public enum RequestType {
START, STOP;
}
@Override
public void onConnected(Bundle bundle) {
switch (mRequestType) {
case START:
getActivityRecognitionClient().requestActivityUpdates(...);
break;
case STOP:
getActivityRecognitionClient().removeActivityUpdates(...);
break;
default:
break;
}
getActivityRecognitionClient().disconnect();
}
@Override
public void onDisconnected() {
mActivityRecognitionClient = null;
}
public void requestUpdates() {
mRequestType = RequestType.START;
getActivityRecognitionClient().connect();
}
public void removeUpdates() {
mRequestType = RequestType.STOP;
getActivityRecognitionClient().connect();
}
private ActivityRecognitionClient getActivityRecognitionClient() {
if (mActivityRecognitionClient == null) {
mActivityRecognitionClient = new ActivityRecognitionClient(...);
}
return mActivityRecognitionClient;
}
可以使用相同的方法来启动和停止位置更新.
我不知道这种方法可能被认为是最佳实践,但它们在示例源代码中.我个人在我的所有项目中使用第三种方法.第三种方法直到最近还在活动识别样本中.
标签:android,google-play-services,location-client 来源: https://codeday.me/bug/20190629/1323370.html