当LocationClient断开连接时,应该调用on GooglePlayServicesClient.ConnectionCallbacks文档onDisconnected。从我的测试中我发现如果我自己断开了LocationClient,它就永远不会被调用。
这是我最基本的示例代码。
public class MainActivity extends ActionBarActivity implements GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener {
private LocationClient locationClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationClient = new LocationClient(getApplicationContext(), this, this);
locationClient.connect();
}
@Override
public void onConnected(Bundle bundle) {
Log.d("APP", "Location Client Connected");
locationClient.disconnect();
Log.d("APP", "Client is connected " + locationClient.isConnected());
}
@Override
public void onDisconnected() {
Log.d("APP", "Location Client Disconnected");
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.d("APP", "Location Client connect failed");
}
}
我收到了onConnected()回调但从未收到onDisconnected()回调。在onConnected回调中,我打印出客户端的连接状态,它正确打印出" false"。
我是否误解了某些内容,或者是仅由外部事件调用的onDisconnected回调,例如:
答案 0 :(得分:1)
我遇到了同样的问题并找到了答案here:
我觉得有点晚了,但我想知道同样的事情,所以我会回复。
这是正常行为。从API文档中不清楚,但在http://developer.android.com/training/location/retrieve-current.html的官方教程中,它说的是onDisconnected:
如果由于错误导致与位置客户端的连接中断,则由位置服务调用。
这意味着如果您自己调用disconnect(),则不应该调用它。