3

GooglePlayServicesClient.ConnectionCallbacksのドキュメントからonDisconnected は、LocationClient が切断されたときに呼び出される必要があります。私のテストから、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 コールバックは次のような外部イベントによってのみ呼び出されます:

  • アクティビティ/サービスのシャットダウン
  • ロケーション クライアントが利用できなくなる
4

1 に答える 1

2

私は同じ問題に悩まされ、ここで答えを見つけました:

遅くなりましたが、私も気になっていたので回答させていただきます。

それは正常な動作です。API ドキュメントからは明らかではありませんが、http://developer.android.com/training/location/retrieve-current.html の公式チュートリアルで、onDisconnected について次のように述べています。

エラーが原因でロケーション クライアントへの接続が切断された場合に、ロケーション サービスによって呼び出されます。

つまり、自分で disconnect() を呼び出した場合は呼び出されるべきではありません。

于 2014-12-26T09:06:21.987 に答える