gpt4 book ai didi

android - 我什么时候应该在我的 Android 应用程序中断开与 Google Play 服务的连接?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:45 28 4
gpt4 key购买 nike

我的应用程序使用位置客户端来检索当前位置并路由到用户在 map 上放置的点。我是 google play 服务的新手,想知道就最佳实践而言,我应该何时断开 LocationClient 连接?

最佳答案

Android 培训网站建议了两种连接和断开 LocationClient 的方法。在Retrieving the Current Location训练中,LocationClientonCreate中初始化,connect()onStartdisconnect( ) 像这样在 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每次用户想要请求或停止 Activity 识别更新时,LocationClient 都会被初始化。首先,connect() 被调用,然后在 onConnected 中,requestActivityUpdatesremoveActivityUpdates 被调用,紧接着 disconnect() 被调用。在样本中source code有一个名为 DetectionRequester 的类启动 Activity 识别更新:

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 可以停止 Activity 识别更新。

另一种方法是将两种方法(requestUpdatesremoveUpdates)放在同一个类中,如下所示:

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;
}

可以使用相同的方法来启动和停止位置更新。

我不知道这些方法中的哪一个可能被认为是最佳实践,但它们在示例源代码中。我个人在我的所有项目中都使用第三种方法。直到最近,第三种方法才出现在 Activity 识别示例中。

关于android - 我什么时候应该在我的 Android 应用程序中断开与 Google Play 服务的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21352678/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com