从GooglePlayServicesClient.ConnectionCallbacks文档中可以看到,当LocationClient断开连接时应该调用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回调,例如:
- 活动/服务关闭 - 位置客户端变得不可用