Android LocationClient的onDisconnect方法没有被调用

3

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回调,例如:
- 活动/服务关闭 - 位置客户端变得不可用

兄弟,你找到解决方案了吗?我也遇到了同样的问题。 - Atul O Holic
1个回答

2
我遇到了同样的问题,并在这里找到了答案:
引用: 我想这有点晚了,但我也在思考同样的问题,所以我会回复。 这是正常行为。虽然API文档不清楚,但在官方教程http://developer.android.com/training/location/retrieve-current.html中,关于onDisconnected说: 当由于错误而导致与位置客户端的连接断开时,由位置服务调用。 这意味着如果您自己调用disconnect(),则不应该调用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接