除非服务停止,否则不会调用 GoogleApiClient OnConnected

GoogleApiClient OnConnected Not Called unless Service is stopped

我正在调用连接到 googleapiclient 的服务。每当第一次调用服务时,一切正常,客户端连接,调用 Onconnected。但是当我不停地回忆起服务的那一刻,我连接了 googleapiclient 但从未调用过 Onconnected 。为什么这样?是否需要每次都终止服务。这是代码:

public class ALW extends Service implements GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks, LocationListener {
    private GoogleApiClient mGoogleApiClient;



    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mGoogleApiClient.isConnected()) {
            mGoogleApiClient.disconnect();
        }
        Log.d("ALWFA", "Stopped");
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("ALWFA", "Called");
        if (!mGoogleApiClient.isConnected()) {
            Log.e("ALWFA", "Called for Connection");
            mGoogleApiClient.connect();
        } else {
            Log.e("ALWFA", "Already Connected");
        }
        //Do Work
        return super.onStartCommand(intent, flags, startId);
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }


    @Override
    public void onCreate() {
        super.onCreate();
        buildGoogleApiClient();
    }


    @Override
    public void onConnected(@Nullable Bundle bundle) {
        Log.d("Google Client", "Connected");
        //Do work

    }

    @Override
    public void onConnectionSuspended(int i) {
        System.out.println("Connection Sus");
        buildGoogleApiClient();
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Log.i("Connection Error", "onConnectionFailed:" + connectionResult.getErrorCode() + "," + connectionResult.getErrorMessage());
        buildGoogleApiClient();
        System.out.println("Connection Failed");
    }

    synchronized void buildGoogleApiClient() {
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
    }


}

而且我在 Onconenctiofailed 中没有收到任何错误。通常代码停留在 onStartCommand:"ALWFA Called"。每当第二次调用服务时。

你应该在再次调用之前检查一下

   if(mGoogleApiClient!=null && !mGoogleApiClient.isConnected())
      {
        //Do your work
      }

并实现这些方法

  @Override
protected void onStart() {
    super.onStart();
    if (mGoogleApiClient != null)
        mGoogleApiClient.connect();
}

@Override
protected void onStop() {
    super.onStop();
    if (mGoogleApiClient != null)
        mGoogleApiClient.disconnect();

}